mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 18:25:13 +08:00
deps: enable OpenSSL asm support for riscv64
Move linux64-riscv64 from NO_ASM_ARCHS to ASM_ARCHS in the OpenSSL config Makefile and regenerate the configuration. This adds asm/ and asm_avx2/ config variants alongside the existing no-asm/ variant. When riscv64 was first added to the OpenSSL config in 2021 (#40063), OpenSSL had no RISC-V assembly support. OpenSSL 3.5.x now ships 17 perlasm generators covering AES (zvkned, zvkb, zkn), SHA-256/512 (zvknha, zvknhb), GHASH/GCM (zvkg, zvbc), ChaCha (v, zbb), SM3 (zvksh), SM4 (zvksed), and CPUID detection. Runtime capability detection via riscvcap.c and the Linux hwprobe syscall ensures safe fallback to generic C code on hardware without these extensions. Also add riscv64 entries to the six asm gypi selector files: openssl_asm.gypi, openssl_asm_avx2.gypi, openssl-cl_asm.gypi, openssl-cl_asm_avx2.gypi, openssl-fips_asm.gypi, and openssl-fips_asm_avx2.gypi. Refs: https://github.com/nodejs/build/issues/4099 Signed-off-by: Jamie Magee <jamie.magee@gmail.com> PR-URL: https://github.com/nodejs/node/pull/62606 Reviewed-By: Stewart X Addison <sxa@redhat.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
This commit is contained in:
1 parent
4140d4c2c8
commit
d6cd5c19cf
223 files changed
+122969
-1
No files matched your search
Vendored
+1
@@ -54,6 +54,7 @@ Here is a list of supported architectures for use of ASM in OpenSSL.
|
||||
| linux | ppc64(*1) | linux-ppc64le | o |
|
||||
| linux | s390 | linux32-s390x | o |
|
||||
| linux | s390x | linux64-s390x | o |
|
||||
| linux | riscv64 | linux64-riscv64 | - |
|
||||
| mac | ia32 | darwin-i386-cc | - |
|
||||
| mac | x64 | darwin64-x86-cc | o |
|
||||
| win | ia32 | VC-WIN32 | - |
|
||||
|
||||
Vendored
+2
-1
@@ -13,9 +13,10 @@ ASM_ARCHS = aix64-gcc-as BSD-x86 BSD-x86_64 \
|
||||
darwin64-x86_64-cc darwin-i386-cc darwin64-arm64-cc linux-aarch64 \
|
||||
linux-armv4 linux-elf linux-x86_64 \
|
||||
linux-ppc64le linux32-s390x linux64-s390x linux64-mips64\
|
||||
linux64-riscv64 \
|
||||
solaris-x86-gcc solaris64-x86_64-gcc VC-WIN64A VC-WIN32
|
||||
|
||||
NO_ASM_ARCHS = VC-WIN64-ARM linux64-riscv64 linux64-loongarch64
|
||||
NO_ASM_ARCHS = VC-WIN64-ARM linux64-loongarch64
|
||||
|
||||
CC = gcc
|
||||
FAKE_GCC = ../config/fake_gcc.pl
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by apps/progs.pl
|
||||
*
|
||||
* Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "progs.h"
|
||||
|
||||
FUNCTION functions[] = {
|
||||
{FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL},
|
||||
{FT_general, "ca", ca_main, ca_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CMP
|
||||
{FT_general, "cmp", cmp_main, cmp_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CMS
|
||||
{FT_general, "cms", cms_main, cms_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "crl", crl_main, crl_options, NULL, NULL},
|
||||
{FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL},
|
||||
{FT_general, "dgst", dgst_main, dgst_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_DH
|
||||
{FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "dsa", dsa_main, dsa_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
{FT_general, "ec", ec_main, ec_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
{FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "enc", enc_main, enc_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
{FT_general, "engine", engine_main, engine_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "errstr", errstr_main, errstr_options, NULL, NULL},
|
||||
{FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
{FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "help", help_main, help_options, NULL, NULL},
|
||||
{FT_general, "info", info_main, info_options, NULL, NULL},
|
||||
{FT_general, "kdf", kdf_main, kdf_options, NULL, NULL},
|
||||
{FT_general, "list", list_main, list_options, NULL, NULL},
|
||||
{FT_general, "mac", mac_main, mac_options, NULL, NULL},
|
||||
{FT_general, "nseq", nseq_main, nseq_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_OCSP
|
||||
{FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "passwd", passwd_main, passwd_options, NULL, NULL},
|
||||
{FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL},
|
||||
{FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL},
|
||||
{FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL},
|
||||
{FT_general, "pkey", pkey_main, pkey_options, NULL, NULL},
|
||||
{FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL},
|
||||
{FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL},
|
||||
{FT_general, "prime", prime_main, prime_options, NULL, NULL},
|
||||
{FT_general, "rand", rand_main, rand_options, NULL, NULL},
|
||||
{FT_general, "rehash", rehash_main, rehash_options, NULL, NULL},
|
||||
{FT_general, "req", req_main, req_options, NULL, NULL},
|
||||
{FT_general, "rsa", rsa_main, rsa_options, NULL, NULL},
|
||||
#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA)
|
||||
{FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_client", s_client_main, s_client_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_server", s_server_main, s_server_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_time", s_time_main, s_time_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL},
|
||||
{FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL},
|
||||
{FT_general, "smime", smime_main, smime_options, NULL, NULL},
|
||||
{FT_general, "speed", speed_main, speed_options, NULL, NULL},
|
||||
{FT_general, "spkac", spkac_main, spkac_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_SRP
|
||||
{FT_general, "srp", srp_main, srp_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_TS
|
||||
{FT_general, "ts", ts_main, ts_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "verify", verify_main, verify_options, NULL, NULL},
|
||||
{FT_general, "version", version_main, version_options, NULL, NULL},
|
||||
{FT_general, "x509", x509_main, x509_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_MD2
|
||||
{FT_md, "md2", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_MD4
|
||||
{FT_md, "md4", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
{FT_md, "md5", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha1", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha384", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512-224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512-256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-384", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-512", dgst_main, NULL, NULL},
|
||||
{FT_md, "shake128", dgst_main, NULL, NULL},
|
||||
{FT_md, "shake256", dgst_main, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_MDC2
|
||||
{FT_md, "mdc2", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RMD160
|
||||
{FT_md, "rmd160", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BLAKE2
|
||||
{FT_md, "blake2b512", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BLAKE2
|
||||
{FT_md, "blake2s256", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM3
|
||||
{FT_md, "sm3", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
{FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL},
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
{FT_cipher, "base64", enc_main, enc_options, NULL},
|
||||
#ifndef OPENSSL_NO_ZLIB
|
||||
{FT_cipher, "zlib", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BROTLI
|
||||
{FT_cipher, "brotli", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ZSTD
|
||||
{FT_cipher, "zstd", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des3", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "desx", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
{FT_cipher, "rc4", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
{FT_cipher, "rc4-40", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
{0, NULL, NULL, NULL, NULL}
|
||||
};
|
||||
+25808
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,694 @@
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zkne_encrypt
|
||||
.type rv64i_zkne_encrypt,@function
|
||||
rv64i_zkne_encrypt:
|
||||
addi sp,sp,-16
|
||||
sd x8,8(sp)
|
||||
sd x9,0(sp)
|
||||
|
||||
# Load input to block cipher
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
|
||||
# Load key
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
|
||||
# Load number of rounds
|
||||
lwu x30,240(x12)
|
||||
|
||||
# initial transformation
|
||||
xor x6,x6,x13
|
||||
xor x7,x7,x14
|
||||
|
||||
# The main loop only executes the first N-1 rounds.
|
||||
add x30,x30,-1
|
||||
|
||||
# Do Nr - 1 rounds (final round is special)
|
||||
1:
|
||||
.word 913507379
|
||||
.word 912491699
|
||||
|
||||
# Update key ptr to point to next key in schedule
|
||||
add x12,x12,16
|
||||
|
||||
# Grab next key in schedule
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
add x30,x30,-1
|
||||
bgtz x30,1b
|
||||
|
||||
# final round
|
||||
.word 846398515
|
||||
.word 845382835
|
||||
|
||||
# since not added 16 before
|
||||
ld x13,16(x12)
|
||||
ld x14,24(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
sd x6,0(x11)
|
||||
sd x7,8(x11)
|
||||
|
||||
# Pop registers and return
|
||||
ld x8,8(sp)
|
||||
ld x9,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zknd_decrypt
|
||||
.type rv64i_zknd_decrypt,@function
|
||||
rv64i_zknd_decrypt:
|
||||
addi sp,sp,-16
|
||||
sd x8,8(sp)
|
||||
sd x9,0(sp)
|
||||
|
||||
# Load input to block cipher
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
|
||||
# Load number of rounds
|
||||
lwu x30,240(x12)
|
||||
|
||||
# Load the last key
|
||||
slli x13,x30,4
|
||||
add x12,x12,x13
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
|
||||
xor x6,x6,x13
|
||||
xor x7,x7,x14
|
||||
|
||||
# The main loop only executes the first N-1 rounds.
|
||||
add x30,x30,-1
|
||||
|
||||
# Do Nr - 1 rounds (final round is special)
|
||||
1:
|
||||
.word 1047725107
|
||||
.word 1046709427
|
||||
|
||||
# Update key ptr to point to next key in schedule
|
||||
add x12,x12,-16
|
||||
|
||||
# Grab next key in schedule
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
add x30,x30,-1
|
||||
bgtz x30,1b
|
||||
|
||||
# final round
|
||||
.word 980616243
|
||||
.word 979600563
|
||||
|
||||
add x12,x12,-16
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
sd x6,0(x11)
|
||||
sd x7,8(x11)
|
||||
# Pop registers and return
|
||||
ld x8,8(sp)
|
||||
ld x9,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zkne_set_encrypt_key
|
||||
.type rv64i_zkne_set_encrypt_key,@function
|
||||
rv64i_zkne_set_encrypt_key:
|
||||
addi sp,sp,-16
|
||||
sd x8,0(sp)
|
||||
# Determine number of rounds from key size in bits
|
||||
li x6,128
|
||||
bne x11,x6,1f
|
||||
li x7,10 # key->rounds = 10 if bits == 128
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 822318099
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 823366675
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 824415251
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 825463827
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 826512403
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 827560979
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 828609555
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 829658131
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 830706707
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 831755283
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
1:
|
||||
li x6,192
|
||||
bne x11,x6,2f
|
||||
li x7,12 # key->rounds = 12 if bits == 192
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 822351507
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 823400083
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 824448659
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 825497235
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 826545811
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 827594387
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 828642963
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 829691539
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
2:
|
||||
li x7,14 # key->rounds = 14 if bits == 256
|
||||
li x6,256
|
||||
beq x11,x6,3f
|
||||
li a0,-2 # If bits != 128, 192, or 256, return -2
|
||||
j 5f
|
||||
3:
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
ld x13,24(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 822515475
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 823564051
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 824612627
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 825661203
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 826709779
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 827758355
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 828806931
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
4: # return 0
|
||||
li a0,0
|
||||
5: # return a0
|
||||
ld x8,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zknd_set_decrypt_key
|
||||
.type rv64i_zknd_set_decrypt_key,@function
|
||||
rv64i_zknd_set_decrypt_key:
|
||||
addi sp,sp,-16
|
||||
sd x8,0(sp)
|
||||
# Determine number of rounds from key size in bits
|
||||
li x6,128
|
||||
bne x11,x6,1f
|
||||
li x7,10 # key->rounds = 10 if bits == 128
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 822318099
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 823366675
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 824415251
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 825463827
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 826512403
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 827560979
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 828609555
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 829658131
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 830706707
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 831755283
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
1:
|
||||
li x6,192
|
||||
bne x11,x6,2f
|
||||
li x7,12 # key->rounds = 12 if bits == 192
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 822351507
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 823400083
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 824448659
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 825497235
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 826545811
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 827594387
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 828642963
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 829691539
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
2:
|
||||
li x7,14 # key->rounds = 14 if bits == 256
|
||||
li x6,256
|
||||
beq x11,x6,3f
|
||||
li a0,-2 # If bits != 128, 192, or 256, return -2
|
||||
j 5f
|
||||
3:
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
ld x13,24(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 822515475
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 823564051
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 824612627
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 825661203
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 826709779
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 827758355
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 828806931
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
# last two one dropped
|
||||
|
||||
4: # return 0
|
||||
li a0,0
|
||||
5: # return a0
|
||||
ld x8,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
+943
@@ -0,0 +1,943 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt
|
||||
.type rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,@function
|
||||
rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt:
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a4)
|
||||
.word 3439489111
|
||||
.word 34074119
|
||||
.word 34041479
|
||||
.word 2815667831
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
1:
|
||||
.word 34041479
|
||||
.word 2815503991
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
bnez t0, 1b
|
||||
.word 34041479
|
||||
.word 2815536759
|
||||
|
||||
|
||||
# aes block size is 16
|
||||
andi a6, a2, 15
|
||||
mv t3, a2
|
||||
beqz a6, 1f
|
||||
sub a2, a2, a6
|
||||
addi t3, a2, -16
|
||||
1:
|
||||
# We make the `LENGTH` become e32 length here.
|
||||
srli t4, a2, 2
|
||||
srli t3, t3, 2
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 10
|
||||
beq t0, t1, aes_xts_enc_256
|
||||
beq t0, t2, aes_xts_enc_128
|
||||
.size rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt
|
||||
.p2align 3
|
||||
aes_xts_enc_128:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Lenc_blocks_128:
|
||||
.word 221182167
|
||||
# load plaintext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store ciphertext
|
||||
.word 221147223
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
sub t3, t3, a7
|
||||
|
||||
bnez t4, .Lenc_blocks_128
|
||||
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# slidedown second to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# ciphertext
|
||||
.word 1065929815
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
.word 3439489111
|
||||
.word 1577848023
|
||||
|
||||
# load last block into v24
|
||||
# note: We should load the last block before store the second to last block
|
||||
# for in-place operation.
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577074263
|
||||
.word 3355504727
|
||||
.word 1577242199
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2747836535
|
||||
.word 1258565207
|
||||
|
||||
# store second to last block
|
||||
.word 201879639
|
||||
.word 33918119
|
||||
|
||||
|
||||
# xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store last block ciphertext
|
||||
addi a1, a1, -16
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_enc_128,.-aes_xts_enc_128
|
||||
.p2align 3
|
||||
aes_xts_enc_256:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Lenc_blocks_256:
|
||||
.word 221182167
|
||||
# load plaintext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store ciphertext
|
||||
.word 221147223
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
sub t3, t3, a7
|
||||
|
||||
bnez t4, .Lenc_blocks_256
|
||||
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# slidedown second to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# ciphertext
|
||||
.word 1065929815
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
.word 3439489111
|
||||
.word 1577848023
|
||||
|
||||
# load last block into v24
|
||||
# note: We should load the last block before store the second to last block
|
||||
# for in-place operation.
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577074263
|
||||
.word 3355504727
|
||||
.word 1577242199
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2747836535
|
||||
.word 1258565207
|
||||
|
||||
# store second to last block
|
||||
.word 201879639
|
||||
.word 33918119
|
||||
|
||||
|
||||
# xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store last block ciphertext
|
||||
addi a1, a1, -16
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_enc_256,.-aes_xts_enc_256
|
||||
.p2align 3
|
||||
.globl rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt
|
||||
.type rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,@function
|
||||
rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt:
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a4)
|
||||
.word 3439489111
|
||||
.word 34074119
|
||||
.word 34041479
|
||||
.word 2815667831
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
1:
|
||||
.word 34041479
|
||||
.word 2815503991
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
bnez t0, 1b
|
||||
.word 34041479
|
||||
.word 2815536759
|
||||
|
||||
|
||||
# aes block size is 16
|
||||
andi a6, a2, 15
|
||||
beqz a6, 1f
|
||||
sub a2, a2, a6
|
||||
addi a2, a2, -16
|
||||
1:
|
||||
# We make the `LENGTH` become e32 length here.
|
||||
srli t4, a2, 2
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 10
|
||||
beq t0, t1, aes_xts_dec_256
|
||||
beq t0, t2, aes_xts_dec_128
|
||||
.size rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt
|
||||
.p2align 3
|
||||
aes_xts_dec_128:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
|
||||
beqz t4, 2f
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Ldec_blocks_128:
|
||||
.word 221182167
|
||||
# load ciphertext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store plaintext
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t4, .Ldec_blocks_128
|
||||
|
||||
2:
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# load second to last block's ciphertext
|
||||
.word 3439489111
|
||||
.word 33909767
|
||||
addi a0, a0, 16
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577073239
|
||||
.word 3355504727
|
||||
.word 1577241175
|
||||
|
||||
beqz a2, 1f
|
||||
# slidedown third to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565207
|
||||
|
||||
# compute IV for second to last block
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
j 2f
|
||||
1:
|
||||
# compute IV for second to last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
2:
|
||||
|
||||
|
||||
## xts second to last block
|
||||
.word 3439489111
|
||||
.word 797871191
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797871191
|
||||
.word 1577848023
|
||||
|
||||
# load last block ciphertext
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# store second to last block plaintext
|
||||
addi t0, a1, 16
|
||||
.word 33721511
|
||||
|
||||
## xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store second to last block plaintext
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_dec_128,.-aes_xts_dec_128
|
||||
.p2align 3
|
||||
aes_xts_dec_256:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
|
||||
beqz t4, 2f
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Ldec_blocks_256:
|
||||
.word 221182167
|
||||
# load ciphertext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store plaintext
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t4, .Ldec_blocks_256
|
||||
|
||||
2:
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# load second to last block's ciphertext
|
||||
.word 3439489111
|
||||
.word 33909767
|
||||
addi a0, a0, 16
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577073239
|
||||
.word 3355504727
|
||||
.word 1577241175
|
||||
|
||||
beqz a2, 1f
|
||||
# slidedown third to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565207
|
||||
|
||||
# compute IV for second to last block
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
j 2f
|
||||
1:
|
||||
# compute IV for second to last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
2:
|
||||
|
||||
|
||||
## xts second to last block
|
||||
.word 3439489111
|
||||
.word 797871191
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797871191
|
||||
.word 1577848023
|
||||
|
||||
# load last block ciphertext
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# store second to last block plaintext
|
||||
addi t0, a1, 16
|
||||
.word 33721511
|
||||
|
||||
## xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store second to last block plaintext
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_dec_256,.-aes_xts_dec_256
|
||||
+326
@@ -0,0 +1,326 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvkb_zvkned_ctr32_encrypt_blocks
|
||||
.type rv64i_zvkb_zvkned_ctr32_encrypt_blocks,@function
|
||||
rv64i_zvkb_zvkned_ctr32_encrypt_blocks:
|
||||
beqz a2, 1f
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 12
|
||||
li t3, 10
|
||||
|
||||
slli t5, a2, 2
|
||||
|
||||
beq t0, t1, ctr32_encrypt_blocks_256
|
||||
beq t0, t2, ctr32_encrypt_blocks_192
|
||||
beq t0, t3, ctr32_encrypt_blocks_128
|
||||
|
||||
1:
|
||||
ret
|
||||
|
||||
.size rv64i_zvkb_zvkned_ctr32_encrypt_blocks,.-rv64i_zvkb_zvkned_ctr32_encrypt_blocks
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_128:
|
||||
# Load all 11 round keys to v1-v11 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_128,.-ctr32_encrypt_blocks_128
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_192:
|
||||
# Load all 13 round keys to v1-v13 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798759031
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_192,.-ctr32_encrypt_blocks_192
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_256:
|
||||
# Load all 15 round keys to v1-v15 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_256,.-ctr32_encrypt_blocks_256
|
||||
+1390
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by util/mkbuildinf.pl
|
||||
*
|
||||
* Copyright 2014-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#define PLATFORM "platform: linux64-riscv64"
|
||||
#define DATE "built on: Tue Jun 30 04:15:54 2026 UTC"
|
||||
|
||||
/*
|
||||
* Generate compiler_flags as an array of individual characters. This is a
|
||||
* workaround for the situation where CFLAGS gets too long for a C90 string
|
||||
* literal
|
||||
*/
|
||||
static const char compiler_flags[] = {
|
||||
'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f',
|
||||
'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a',
|
||||
',','-','-','n','o','e','x','e','c','s','t','a','c','k',' ','-',
|
||||
'W','a','l','l',' ','-','O','3',' ','-','D','O','P','E','N','S',
|
||||
'S','L','_','U','S','E','_','N','O','D','E','L','E','T','E',' ',
|
||||
'-','D','O','P','E','N','S','S','L','_','P','I','C',' ','-','D',
|
||||
'O','P','E','N','S','S','L','_','B','U','I','L','D','I','N','G',
|
||||
'_','O','P','E','N','S','S','L',' ','-','D','B','R','O','T','L',
|
||||
'I',' ','-','D','Z','L','I','B',' ','-','D','Z','S','T','D',' ',
|
||||
'-','D','N','D','E','B','U','G',' ','-','I','.','.','/','.','.',
|
||||
'/','b','r','o','t','l','i','/','c','/','i','n','c','l','u','d',
|
||||
'e',' ','-','I','.','.','/','.','.','/','z','l','i','b',' ','-',
|
||||
'I','.','.','/','.','.','/','z','s','t','d','/','l','i','b','\0'
|
||||
};
|
||||
+461
@@ -0,0 +1,461 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ChaCha20_ctr32_v_zbb_zvkb
|
||||
.type ChaCha20_ctr32_v_zbb_zvkb,@function
|
||||
ChaCha20_ctr32_v_zbb_zvkb:
|
||||
addi sp, sp, -96
|
||||
sd s0, 0(sp)
|
||||
sd s1, 8(sp)
|
||||
sd s2, 16(sp)
|
||||
sd s3, 24(sp)
|
||||
sd s4, 32(sp)
|
||||
sd s5, 40(sp)
|
||||
sd s6, 48(sp)
|
||||
sd s7, 56(sp)
|
||||
sd s8, 64(sp)
|
||||
sd s9, 72(sp)
|
||||
sd s10, 80(sp)
|
||||
sd s11, 88(sp)
|
||||
addi sp, sp, -64
|
||||
|
||||
lw t2, 0(a4)
|
||||
|
||||
.Lblock_loop:
|
||||
# We will use the scalar ALU for 1 chacha block.
|
||||
srli t3, a2, 6
|
||||
.word 219050839
|
||||
slli t4, t1, 6
|
||||
bltu t4, a2, 1f
|
||||
# Since there is no more chacha block existed, we need to split 1 block
|
||||
# from vector ALU.
|
||||
addi t4, t1, -1
|
||||
.word 219083607
|
||||
1:
|
||||
|
||||
#### chacha block data
|
||||
# init chacha const states into v0~v3
|
||||
# "expa" little endian
|
||||
li a5, 0x61707865
|
||||
.word 1577566295
|
||||
# "nd 3" little endian
|
||||
li a6, 0x3320646e
|
||||
.word 1577599191
|
||||
# "2-by" little endian
|
||||
li a7, 0x79622d32
|
||||
.word 1577632087
|
||||
# "te k" little endian
|
||||
li s0, 0x6b206574
|
||||
lw s1, 0(a3)
|
||||
.word 1577337303
|
||||
|
||||
# init chacha key states into v4~v11
|
||||
lw s2, 4(a3)
|
||||
.word 1577370199
|
||||
lw s3, 8(a3)
|
||||
.word 1577665239
|
||||
lw s4, 12(a3)
|
||||
.word 1577698135
|
||||
lw s5, 16(a3)
|
||||
.word 1577731031
|
||||
lw s6, 20(a3)
|
||||
.word 1577763927
|
||||
lw s7, 24(a3)
|
||||
.word 1577796823
|
||||
lw s8, 28(a3)
|
||||
.word 1577829719
|
||||
.word 1577862615
|
||||
|
||||
# init chacha key states into v12~v13
|
||||
lw s10, 4(a4)
|
||||
.word 1376298583
|
||||
lw s11, 8(a4)
|
||||
.word 46384727
|
||||
lw t0, 12(a4)
|
||||
.word 1577928407
|
||||
add s9, t2, t1
|
||||
|
||||
# init chacha nonce states into v14~v15
|
||||
.word 1577961303
|
||||
.word 1577240535
|
||||
|
||||
li t3, 64
|
||||
# load the top-half of input data into v16~v23
|
||||
.word 3955615751
|
||||
|
||||
# till now in block_loop, we used:
|
||||
# - v0~v15 for chacha states.
|
||||
# - v16~v23 for top-half of input data.
|
||||
# - v24~v31 haven't been used yet.
|
||||
|
||||
# 20 round groups
|
||||
li t3, 10
|
||||
.Lround_loop:
|
||||
# we can use v24~v31 as temporary registers in round_loop.
|
||||
addi t3, t3, -1
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 1388852823
|
||||
.word 1628232859
|
||||
.word 1389901527
|
||||
.word 1628265755
|
||||
.word 1390950231
|
||||
.word 1628298651
|
||||
.word 1391998935
|
||||
.word 1627574939
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 1380594263
|
||||
.word 1631900827
|
||||
.word 1381642967
|
||||
.word 1632196891
|
||||
.word 1382691671
|
||||
.word 1632229787
|
||||
.word 1383740375
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 1389114967
|
||||
.word 1636621467
|
||||
.word 1390163671
|
||||
.word 1636654363
|
||||
.word 1391212375
|
||||
.word 1636687259
|
||||
.word 1392261079
|
||||
.word 1635963547
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 1380758103
|
||||
.word 1637143707
|
||||
.word 1381806807
|
||||
.word 1637439771
|
||||
.word 1382855511
|
||||
.word 1637472667
|
||||
.word 1383904215
|
||||
.word 1637505563
|
||||
|
||||
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 1390950231
|
||||
.word 1628298651
|
||||
.word 1391998935
|
||||
.word 1627574939
|
||||
.word 1388852823
|
||||
.word 1628232859
|
||||
.word 1389901527
|
||||
.word 1628265755
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 1380594263
|
||||
.word 1631900827
|
||||
.word 1381642967
|
||||
.word 1632196891
|
||||
.word 1382691671
|
||||
.word 1632229787
|
||||
.word 1383740375
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 1391212375
|
||||
.word 1636687259
|
||||
.word 1392261079
|
||||
.word 1635963547
|
||||
.word 1389114967
|
||||
.word 1636621467
|
||||
.word 1390163671
|
||||
.word 1636654363
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 1380758103
|
||||
.word 1637143707
|
||||
.word 1381806807
|
||||
.word 1637439771
|
||||
.word 1382855511
|
||||
.word 1637472667
|
||||
.word 1383904215
|
||||
.word 1637505563
|
||||
|
||||
|
||||
bnez t3, .Lround_loop
|
||||
|
||||
li t3, 64
|
||||
# load the bottom-half of input data into v24~v31
|
||||
addi t4, a1, 32
|
||||
.word 3956206599
|
||||
|
||||
# now, there are no free vector registers until the round_loop exits.
|
||||
|
||||
# add chacha top-half initial block states
|
||||
# "expa" little endian
|
||||
li t3, 0x61707865
|
||||
.word 34488407
|
||||
add a5, a5, t3
|
||||
# "nd 3" little endian
|
||||
li t4, 0x3320646e
|
||||
.word 35569879
|
||||
add a6, a6, t4
|
||||
lw t3, 0(a3)
|
||||
# "2-by" little endian
|
||||
li t5, 0x79622d32
|
||||
.word 36651351
|
||||
add a7, a7, t5
|
||||
lw t4, 4(a3)
|
||||
# "te k" little endian
|
||||
li t6, 0x6b206574
|
||||
.word 37732823
|
||||
add s0, s0, t6
|
||||
lw t5, 8(a3)
|
||||
.word 38683223
|
||||
add s1, s1, t3
|
||||
lw t6, 12(a3)
|
||||
.word 39764695
|
||||
add s2, s2, t4
|
||||
.word 40846167
|
||||
add s3, s3, t5
|
||||
.word 41927639
|
||||
add s4, s4, t6
|
||||
|
||||
# xor with the top-half input
|
||||
.word 788531287
|
||||
sw a5, 0(sp)
|
||||
sw a6, 4(sp)
|
||||
.word 789612759
|
||||
sw a7, 8(sp)
|
||||
sw s0, 12(sp)
|
||||
.word 790694231
|
||||
sw s1, 16(sp)
|
||||
sw s2, 20(sp)
|
||||
.word 791775703
|
||||
sw s3, 24(sp)
|
||||
sw s4, 28(sp)
|
||||
.word 792857175
|
||||
lw t3, 16(a3)
|
||||
.word 793938647
|
||||
lw t4, 20(a3)
|
||||
.word 795020119
|
||||
lw t5, 24(a3)
|
||||
.word 796101591
|
||||
|
||||
# save the top-half of output from v16~v23
|
||||
li t6, 64
|
||||
.word 3958728743
|
||||
|
||||
# add chacha bottom-half initial block states
|
||||
.word 42878039
|
||||
add s5, s5, t3
|
||||
lw t6, 28(a3)
|
||||
.word 43959511
|
||||
add s6, s6, t4
|
||||
lw t3, 4(a4)
|
||||
.word 45040983
|
||||
add s7, s7, t5
|
||||
lw t4, 8(a4)
|
||||
.word 46122455
|
||||
add s8, s8, t6
|
||||
lw t5, 12(a4)
|
||||
.word 1376297047
|
||||
add s9, s9, t2
|
||||
.word 46384727
|
||||
add s9, s9, t1
|
||||
.word 48121559
|
||||
add s10, s10, t3
|
||||
.word 49203031
|
||||
add s11, s11, t4
|
||||
.word 50284503
|
||||
add t0, t0, t5
|
||||
.word 46138967
|
||||
# xor with the bottom-half input
|
||||
.word 797183063
|
||||
sw s5, 32(sp)
|
||||
.word 798264535
|
||||
sw s6, 36(sp)
|
||||
.word 799346007
|
||||
sw s7, 40(sp)
|
||||
.word 800427479
|
||||
sw s8, 44(sp)
|
||||
.word 802590423
|
||||
sw s9, 48(sp)
|
||||
.word 801508951
|
||||
sw s10, 52(sp)
|
||||
.word 803671895
|
||||
sw s11, 56(sp)
|
||||
.word 804753367
|
||||
sw t0, 60(sp)
|
||||
|
||||
# save the bottom-half of output from v24~v31
|
||||
li t3, 64
|
||||
addi t4, a0, 32
|
||||
.word 3956206631
|
||||
|
||||
# the computed vector parts: `64 * VL`
|
||||
slli t3, t1, 6
|
||||
|
||||
add a1, a1, t3
|
||||
add a0, a0, t3
|
||||
sub a2, a2, t3
|
||||
add t2, t2, t1
|
||||
|
||||
# process the scalar data block
|
||||
addi t2, t2, 1
|
||||
li t3, 64
|
||||
.word 197549747
|
||||
sub a2, a2, t4
|
||||
mv t5, sp
|
||||
.Lscalar_data_loop:
|
||||
.word 205452119
|
||||
# from this on, vector registers are grouped with lmul = 8
|
||||
.word 33915911
|
||||
.word 34539527
|
||||
.word 780665943
|
||||
.word 33883175
|
||||
add a1, a1, t1
|
||||
add a0, a0, t1
|
||||
add t5, t5, t1
|
||||
sub t4, t4, t1
|
||||
bnez t4, .Lscalar_data_loop
|
||||
|
||||
bnez a2, .Lblock_loop
|
||||
|
||||
addi sp, sp, 64
|
||||
ld s0, 0(sp)
|
||||
ld s1, 8(sp)
|
||||
ld s2, 16(sp)
|
||||
ld s3, 24(sp)
|
||||
ld s4, 32(sp)
|
||||
ld s5, 40(sp)
|
||||
ld s6, 48(sp)
|
||||
ld s7, 56(sp)
|
||||
ld s8, 64(sp)
|
||||
ld s9, 72(sp)
|
||||
ld s10, 80(sp)
|
||||
ld s11, 88(sp)
|
||||
addi sp, sp, 96
|
||||
|
||||
ret
|
||||
.size ChaCha20_ctr32_v_zbb_zvkb,.-ChaCha20_ctr32_v_zbb_zvkb
|
||||
+525
@@ -0,0 +1,525 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ChaCha20_ctr32_v_zbb
|
||||
.type ChaCha20_ctr32_v_zbb,@function
|
||||
ChaCha20_ctr32_v_zbb:
|
||||
addi sp, sp, -96
|
||||
sd s0, 0(sp)
|
||||
sd s1, 8(sp)
|
||||
sd s2, 16(sp)
|
||||
sd s3, 24(sp)
|
||||
sd s4, 32(sp)
|
||||
sd s5, 40(sp)
|
||||
sd s6, 48(sp)
|
||||
sd s7, 56(sp)
|
||||
sd s8, 64(sp)
|
||||
sd s9, 72(sp)
|
||||
sd s10, 80(sp)
|
||||
sd s11, 88(sp)
|
||||
addi sp, sp, -64
|
||||
|
||||
lw t2, 0(a4)
|
||||
|
||||
.Lblock_loop:
|
||||
# We will use the scalar ALU for 1 chacha block.
|
||||
srli t3, a2, 6
|
||||
.word 219050839
|
||||
slli t4, t1, 6
|
||||
bltu t4, a2, 1f
|
||||
# Since there is no more chacha block existed, we need to split 1 block
|
||||
# from vector ALU.
|
||||
addi t4, t1, -1
|
||||
.word 219083607
|
||||
1:
|
||||
|
||||
#### chacha block data
|
||||
# init chacha const states into v0~v3
|
||||
# "expa" little endian
|
||||
li a5, 0x61707865
|
||||
.word 1577566295
|
||||
# "nd 3" little endian
|
||||
li a6, 0x3320646e
|
||||
.word 1577599191
|
||||
# "2-by" little endian
|
||||
li a7, 0x79622d32
|
||||
.word 1577632087
|
||||
# "te k" little endian
|
||||
li s0, 0x6b206574
|
||||
lw s1, 0(a3)
|
||||
.word 1577337303
|
||||
|
||||
# init chacha key states into v4~v11
|
||||
lw s2, 4(a3)
|
||||
.word 1577370199
|
||||
lw s3, 8(a3)
|
||||
.word 1577665239
|
||||
lw s4, 12(a3)
|
||||
.word 1577698135
|
||||
lw s5, 16(a3)
|
||||
.word 1577731031
|
||||
lw s6, 20(a3)
|
||||
.word 1577763927
|
||||
lw s7, 24(a3)
|
||||
.word 1577796823
|
||||
lw s8, 28(a3)
|
||||
.word 1577829719
|
||||
.word 1577862615
|
||||
|
||||
# init chacha key states into v12~v13
|
||||
lw s10, 4(a4)
|
||||
.word 1376298583
|
||||
lw s11, 8(a4)
|
||||
.word 46384727
|
||||
lw t0, 12(a4)
|
||||
.word 1577928407
|
||||
add s9, t2, t1
|
||||
|
||||
# init chacha nonce states into v14~v15
|
||||
.word 1577961303
|
||||
.word 1577240535
|
||||
|
||||
li t3, 64
|
||||
# load the top-half of input data into v16~v23
|
||||
.word 3955615751
|
||||
|
||||
# till now in block_loop, we used:
|
||||
# - v0~v15 for chacha states.
|
||||
# - v16~v23 for top-half of input data.
|
||||
# - v24~v31 haven't been used yet.
|
||||
|
||||
# 20 round groups
|
||||
li t3, 10
|
||||
.Lround_loop:
|
||||
# we can use v24~v31 as temporary registers in round_loop.
|
||||
addi t3, t3, -1
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 2529705047
|
||||
.word 2530753751
|
||||
.word 2531802455
|
||||
.word 2532851159
|
||||
.word 2731030103
|
||||
.word 2732078807
|
||||
.word 2733127511
|
||||
.word 2734176215
|
||||
.word 718014039
|
||||
.word 1628232859
|
||||
.word 719095511
|
||||
.word 1628265755
|
||||
.word 720176983
|
||||
.word 1628298651
|
||||
.word 721258455
|
||||
.word 1627574939
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 2521185367
|
||||
.word 2522234071
|
||||
.word 2523282775
|
||||
.word 2524331479
|
||||
.word 2722771543
|
||||
.word 2723820247
|
||||
.word 2724868951
|
||||
.word 2725917655
|
||||
.word 709624407
|
||||
.word 1631900827
|
||||
.word 710705879
|
||||
.word 1632196891
|
||||
.word 711787351
|
||||
.word 1632229787
|
||||
.word 712868823
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 2529442903
|
||||
.word 2530491607
|
||||
.word 2531540311
|
||||
.word 2532589015
|
||||
.word 2731292247
|
||||
.word 2732340951
|
||||
.word 2733389655
|
||||
.word 2734438359
|
||||
.word 718014039
|
||||
.word 1636621467
|
||||
.word 719095511
|
||||
.word 1636654363
|
||||
.word 720176983
|
||||
.word 1636687259
|
||||
.word 721258455
|
||||
.word 1635963547
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 2521021527
|
||||
.word 2522070231
|
||||
.word 2523118935
|
||||
.word 2524167639
|
||||
.word 2722935383
|
||||
.word 2723984087
|
||||
.word 2725032791
|
||||
.word 2726081495
|
||||
.word 709624407
|
||||
.word 1637143707
|
||||
.word 710705879
|
||||
.word 1637439771
|
||||
.word 711787351
|
||||
.word 1637472667
|
||||
.word 712868823
|
||||
.word 1637505563
|
||||
|
||||
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 2531802199
|
||||
.word 2532850903
|
||||
.word 2529705303
|
||||
.word 2530754007
|
||||
.word 2733127511
|
||||
.word 2734176215
|
||||
.word 2731030103
|
||||
.word 2732078807
|
||||
.word 720111447
|
||||
.word 1628298651
|
||||
.word 721192919
|
||||
.word 1627574939
|
||||
.word 718079575
|
||||
.word 1628232859
|
||||
.word 719161047
|
||||
.word 1628265755
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 2521185367
|
||||
.word 2522234071
|
||||
.word 2523282775
|
||||
.word 2524331479
|
||||
.word 2722771543
|
||||
.word 2723820247
|
||||
.word 2724868951
|
||||
.word 2725917655
|
||||
.word 709624407
|
||||
.word 1631900827
|
||||
.word 710705879
|
||||
.word 1632196891
|
||||
.word 711787351
|
||||
.word 1632229787
|
||||
.word 712868823
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 2531540055
|
||||
.word 2532588759
|
||||
.word 2529443159
|
||||
.word 2530491863
|
||||
.word 2733389655
|
||||
.word 2734438359
|
||||
.word 2731292247
|
||||
.word 2732340951
|
||||
.word 720111447
|
||||
.word 1636687259
|
||||
.word 721192919
|
||||
.word 1635963547
|
||||
.word 718079575
|
||||
.word 1636621467
|
||||
.word 719161047
|
||||
.word 1636654363
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 2521021527
|
||||
.word 2522070231
|
||||
.word 2523118935
|
||||
.word 2524167639
|
||||
.word 2722935383
|
||||
.word 2723984087
|
||||
.word 2725032791
|
||||
.word 2726081495
|
||||
.word 709624407
|
||||
.word 1637143707
|
||||
.word 710705879
|
||||
.word 1637439771
|
||||
.word 711787351
|
||||
.word 1637472667
|
||||
.word 712868823
|
||||
.word 1637505563
|
||||
|
||||
|
||||
bnez t3, .Lround_loop
|
||||
|
||||
li t3, 64
|
||||
# load the bottom-half of input data into v24~v31
|
||||
addi t4, a1, 32
|
||||
.word 3956206599
|
||||
|
||||
# now, there are no free vector registers until the round_loop exits.
|
||||
|
||||
# add chacha top-half initial block states
|
||||
# "expa" little endian
|
||||
li t3, 0x61707865
|
||||
.word 34488407
|
||||
add a5, a5, t3
|
||||
# "nd 3" little endian
|
||||
li t4, 0x3320646e
|
||||
.word 35569879
|
||||
add a6, a6, t4
|
||||
lw t3, 0(a3)
|
||||
# "2-by" little endian
|
||||
li t5, 0x79622d32
|
||||
.word 36651351
|
||||
add a7, a7, t5
|
||||
lw t4, 4(a3)
|
||||
# "te k" little endian
|
||||
li t6, 0x6b206574
|
||||
.word 37732823
|
||||
add s0, s0, t6
|
||||
lw t5, 8(a3)
|
||||
.word 38683223
|
||||
add s1, s1, t3
|
||||
lw t6, 12(a3)
|
||||
.word 39764695
|
||||
add s2, s2, t4
|
||||
.word 40846167
|
||||
add s3, s3, t5
|
||||
.word 41927639
|
||||
add s4, s4, t6
|
||||
|
||||
# xor with the top-half input
|
||||
.word 788531287
|
||||
sw a5, 0(sp)
|
||||
sw a6, 4(sp)
|
||||
.word 789612759
|
||||
sw a7, 8(sp)
|
||||
sw s0, 12(sp)
|
||||
.word 790694231
|
||||
sw s1, 16(sp)
|
||||
sw s2, 20(sp)
|
||||
.word 791775703
|
||||
sw s3, 24(sp)
|
||||
sw s4, 28(sp)
|
||||
.word 792857175
|
||||
lw t3, 16(a3)
|
||||
.word 793938647
|
||||
lw t4, 20(a3)
|
||||
.word 795020119
|
||||
lw t5, 24(a3)
|
||||
.word 796101591
|
||||
|
||||
# save the top-half of output from v16~v23
|
||||
li t6, 64
|
||||
.word 3958728743
|
||||
|
||||
# add chacha bottom-half initial block states
|
||||
.word 42878039
|
||||
add s5, s5, t3
|
||||
lw t6, 28(a3)
|
||||
.word 43959511
|
||||
add s6, s6, t4
|
||||
lw t3, 4(a4)
|
||||
.word 45040983
|
||||
add s7, s7, t5
|
||||
lw t4, 8(a4)
|
||||
.word 46122455
|
||||
add s8, s8, t6
|
||||
lw t5, 12(a4)
|
||||
.word 1376297047
|
||||
add s9, s9, t2
|
||||
.word 46384727
|
||||
add s9, s9, t1
|
||||
.word 48121559
|
||||
add s10, s10, t3
|
||||
.word 49203031
|
||||
add s11, s11, t4
|
||||
.word 50284503
|
||||
add t0, t0, t5
|
||||
.word 46138967
|
||||
# xor with the bottom-half input
|
||||
.word 797183063
|
||||
sw s5, 32(sp)
|
||||
.word 798264535
|
||||
sw s6, 36(sp)
|
||||
.word 799346007
|
||||
sw s7, 40(sp)
|
||||
.word 800427479
|
||||
sw s8, 44(sp)
|
||||
.word 802590423
|
||||
sw s9, 48(sp)
|
||||
.word 801508951
|
||||
sw s10, 52(sp)
|
||||
.word 803671895
|
||||
sw s11, 56(sp)
|
||||
.word 804753367
|
||||
sw t0, 60(sp)
|
||||
|
||||
# save the bottom-half of output from v24~v31
|
||||
li t3, 64
|
||||
addi t4, a0, 32
|
||||
.word 3956206631
|
||||
|
||||
# the computed vector parts: `64 * VL`
|
||||
slli t3, t1, 6
|
||||
|
||||
add a1, a1, t3
|
||||
add a0, a0, t3
|
||||
sub a2, a2, t3
|
||||
add t2, t2, t1
|
||||
|
||||
# process the scalar data block
|
||||
addi t2, t2, 1
|
||||
li t3, 64
|
||||
.word 197549747
|
||||
sub a2, a2, t4
|
||||
mv t5, sp
|
||||
.Lscalar_data_loop:
|
||||
.word 205452119
|
||||
# from this on, vector registers are grouped with lmul = 8
|
||||
.word 33915911
|
||||
.word 34539527
|
||||
.word 780665943
|
||||
.word 33883175
|
||||
add a1, a1, t1
|
||||
add a0, a0, t1
|
||||
add t5, t5, t1
|
||||
sub t4, t4, t1
|
||||
bnez t4, .Lscalar_data_loop
|
||||
|
||||
bnez a2, .Lblock_loop
|
||||
|
||||
addi sp, sp, 64
|
||||
ld s0, 0(sp)
|
||||
ld s1, 8(sp)
|
||||
ld s2, 16(sp)
|
||||
ld s3, 24(sp)
|
||||
ld s4, 32(sp)
|
||||
ld s5, 40(sp)
|
||||
ld s6, 48(sp)
|
||||
ld s7, 56(sp)
|
||||
ld s8, 64(sp)
|
||||
ld s9, 72(sp)
|
||||
ld s10, 80(sp)
|
||||
ld s11, 88(sp)
|
||||
addi sp, sp, 96
|
||||
|
||||
ret
|
||||
.size ChaCha20_ctr32_v_zbb,.-ChaCha20_ctr32_v_zbb
|
||||
Vendored
+1540
File diff suppressed because it is too large.
Load diff
+268
@@ -0,0 +1,268 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkb_zvbc
|
||||
.type gcm_init_rv64i_zvkb_zvbc,@function
|
||||
gcm_init_rv64i_zvkb_zvbc:
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a1, a1, 8
|
||||
li t0, -8
|
||||
li t1, 63
|
||||
la t2, Lpolymod
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 173404295 # vlse64.v v1, (a1), t0
|
||||
.word 33812743 # vle64.v v2, (t2)
|
||||
|
||||
# Shift one left and get the carry bits.
|
||||
.word 2719171031 # vsrl.vx v3, v1, t1
|
||||
.word 2517676247 # vsll.vi v1, v1, 1
|
||||
|
||||
# Use the fact that the polynomial degree is no more than 128,
|
||||
# i.e. only the LSB of the upper half could be set.
|
||||
# Thanks to this we don't need to do the full reduction here.
|
||||
# Instead simply subtract the reduction polynomial.
|
||||
# This idea was taken from x86 ghash implementation in OpenSSL.
|
||||
.word 976269911 # vslideup.vi v4, v3, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
.word 672268503 # vor.vv v1, v1, v4, v0.t
|
||||
|
||||
# Need to set the mask to 3, if the carry bit is set.
|
||||
.word 1577156695 # vmv.v.v v0, v3
|
||||
.word 1577071063 # vmv.v.i v3, 0
|
||||
.word 1546760663 # vmerge.vim v3, v3, 3, v0
|
||||
.word 1577156695 # vmv.v.v v0, v3
|
||||
|
||||
.word 739311831 # vxor.vv v1, v1, v2, v0.t
|
||||
|
||||
.word 33910951 # vse64.v v1, (a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkb_zvbc,.-gcm_init_rv64i_zvkb_zvbc
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zvkb_zvbc
|
||||
.type gcm_gmult_rv64i_zvkb_zvbc,@function
|
||||
gcm_gmult_rv64i_zvkb_zvbc:
|
||||
ld t0, (a1)
|
||||
ld t1, 8(a1)
|
||||
li t2, 63
|
||||
la t3, Lpolymod
|
||||
ld t3, 8(t3)
|
||||
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a0, a0, 8
|
||||
li t4, -8
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 198537863 # vlse64.v v5, (a0), t4
|
||||
.word 1247060695 # vrev8.v v5, v5
|
||||
|
||||
# Multiplication
|
||||
|
||||
# Do two 64x64 multiplications in one go to save some time
|
||||
# and simplify things.
|
||||
|
||||
# A = a1a0 (t1, t0)
|
||||
# B = b1b0 (v5)
|
||||
# C = c1c0 (256 bit)
|
||||
# c1 = a1b1 + (a0b1)h + (a1b0)h
|
||||
# c0 = a0b0 + (a0b1)l + (a1b0)h
|
||||
|
||||
# v1 = (a0b1)l,(a0b0)l
|
||||
.word 844292311 # vclmul.vx v1, v5, t0
|
||||
# v3 = (a0b1)h,(a0b0)h
|
||||
.word 911401431 # vclmulh.vx v3, v5, t0
|
||||
|
||||
# v4 = (a1b1)l,(a1b0)l
|
||||
.word 844325463 # vclmul.vx v4, v5, t1
|
||||
# v2 = (a1b1)h,(a1b0)h
|
||||
.word 911434071 # vclmulh.vx v2, v5, t1
|
||||
|
||||
# Is there a better way to do this?
|
||||
# Would need to swap the order of elements within a vector register.
|
||||
.word 976270039 # vslideup.vi v5, v3, 1
|
||||
.word 977318743 # vslideup.vi v6, v4, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
.word 1044427351 # vslidedown.vi v4, v4, 1
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
# v2 += (a0b1)h
|
||||
.word 740393303 # vxor.vv v2, v2, v3, v0.t
|
||||
# v2 += (a1b1)l
|
||||
.word 740426071 # vxor.vv v2, v2, v4, v0.t
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
# v1 += (a0b0)h,0
|
||||
.word 739410135 # vxor.vv v1, v1, v5, v0.t
|
||||
# v1 += (a1b0)l,0
|
||||
.word 739442903 # vxor.vv v1, v1, v6, v0.t
|
||||
|
||||
# Now the 256bit product should be stored in (v2,v1)
|
||||
# v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l
|
||||
# v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l
|
||||
|
||||
# Reduction
|
||||
# Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0]
|
||||
# This is a slight variation of the Gueron's Montgomery reduction.
|
||||
# The difference being the order of some operations has been changed,
|
||||
# to make a better use of vclmul(h) instructions.
|
||||
|
||||
# First step:
|
||||
# c1 += (c0 * P)l
|
||||
# vmv.v.i v0, 2
|
||||
.word 940618199 # vslideup.vi v3, v1, 1, v0.t
|
||||
.word 809394647 # vclmul.vx v3, v3, t3, v0.t
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# Second step:
|
||||
# D = d1,d0 is final result
|
||||
# We want:
|
||||
# m1 = c1 + (c1 * P)h
|
||||
# m0 = (c1 * P)l + (c0 * P)h + c0
|
||||
# d1 = c3 + m1
|
||||
# d0 = c2 + m0
|
||||
|
||||
#v3 = (c1 * P)l, 0
|
||||
.word 807297495 # vclmul.vx v3, v1, t3, v0.t
|
||||
#v4 = (c1 * P)h, (c0 * P)h
|
||||
.word 907960919 # vclmulh.vx v4, v1, t3
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 772931799 # vxor.vv v1, v1, v4
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# XOR in the upper upper part of the product
|
||||
.word 773882199 # vxor.vv v2, v2, v1
|
||||
|
||||
.word 1243914583 # vrev8.v v2, v2
|
||||
.word 198537511 # vsse64.v v2, (a0), t4
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zvkb_zvbc,.-gcm_gmult_rv64i_zvkb_zvbc
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zvkb_zvbc
|
||||
.type gcm_ghash_rv64i_zvkb_zvbc,@function
|
||||
gcm_ghash_rv64i_zvkb_zvbc:
|
||||
ld t0, (a1)
|
||||
ld t1, 8(a1)
|
||||
li t2, 63
|
||||
la t3, Lpolymod
|
||||
ld t3, 8(t3)
|
||||
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a0, a0, 8
|
||||
add a2, a2, 8
|
||||
li t4, -8
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 198537863 # vlse64.v v5, (a0), t4
|
||||
|
||||
Lstep:
|
||||
# Read input data
|
||||
.word 198603655 # vle64.v v0, (a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
# XOR them into Xi
|
||||
.word 777224919 # vxor.vv v0, v0, v1
|
||||
|
||||
.word 1247060695 # vrev8.v v5, v5
|
||||
|
||||
# Multiplication
|
||||
|
||||
# Do two 64x64 multiplications in one go to save some time
|
||||
# and simplify things.
|
||||
|
||||
# A = a1a0 (t1, t0)
|
||||
# B = b1b0 (v5)
|
||||
# C = c1c0 (256 bit)
|
||||
# c1 = a1b1 + (a0b1)h + (a1b0)h
|
||||
# c0 = a0b0 + (a0b1)l + (a1b0)h
|
||||
|
||||
# v1 = (a0b1)l,(a0b0)l
|
||||
.word 844292311 # vclmul.vx v1, v5, t0
|
||||
# v3 = (a0b1)h,(a0b0)h
|
||||
.word 911401431 # vclmulh.vx v3, v5, t0
|
||||
|
||||
# v4 = (a1b1)l,(a1b0)l
|
||||
.word 844325463 # vclmul.vx v4, v5, t1
|
||||
# v2 = (a1b1)h,(a1b0)h
|
||||
.word 911434071 # vclmulh.vx v2, v5, t1
|
||||
|
||||
# Is there a better way to do this?
|
||||
# Would need to swap the order of elements within a vector register.
|
||||
.word 976270039 # vslideup.vi v5, v3, 1
|
||||
.word 977318743 # vslideup.vi v6, v4, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
.word 1044427351 # vslidedown.vi v4, v4, 1
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
# v2 += (a0b1)h
|
||||
.word 740393303 # vxor.vv v2, v2, v3, v0.t
|
||||
# v2 += (a1b1)l
|
||||
.word 740426071 # vxor.vv v2, v2, v4, v0.t
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
# v1 += (a0b0)h,0
|
||||
.word 739410135 # vxor.vv v1, v1, v5, v0.t
|
||||
# v1 += (a1b0)l,0
|
||||
.word 739442903 # vxor.vv v1, v1, v6, v0.t
|
||||
|
||||
# Now the 256bit product should be stored in (v2,v1)
|
||||
# v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l
|
||||
# v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l
|
||||
|
||||
# Reduction
|
||||
# Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0]
|
||||
# This is a slight variation of the Gueron's Montgomery reduction.
|
||||
# The difference being the order of some operations has been changed,
|
||||
# to make a better use of vclmul(h) instructions.
|
||||
|
||||
# First step:
|
||||
# c1 += (c0 * P)l
|
||||
# vmv.v.i v0, 2
|
||||
.word 940618199 # vslideup.vi v3, v1, 1, v0.t
|
||||
.word 809394647 # vclmul.vx v3, v3, t3, v0.t
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# Second step:
|
||||
# D = d1,d0 is final result
|
||||
# We want:
|
||||
# m1 = c1 + (c1 * P)h
|
||||
# m0 = (c1 * P)l + (c0 * P)h + c0
|
||||
# d1 = c3 + m1
|
||||
# d0 = c2 + m0
|
||||
|
||||
#v3 = (c1 * P)l, 0
|
||||
.word 807297495 # vclmul.vx v3, v1, t3, v0.t
|
||||
#v4 = (c1 * P)h, (c0 * P)h
|
||||
.word 907960919 # vclmulh.vx v4, v1, t3
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 772931799 # vxor.vv v1, v1, v4
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# XOR in the upper upper part of the product
|
||||
.word 773882199 # vxor.vv v2, v2, v1
|
||||
|
||||
.word 1243914967 # vrev8.v v2, v2
|
||||
|
||||
bnez a3, Lstep
|
||||
|
||||
.word 198537895 # vsse64.v v2, (a0), t4
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zvkb_zvbc,.-gcm_ghash_rv64i_zvkb_zvbc
|
||||
.p2align 4
|
||||
Lpolymod:
|
||||
.dword 0x0000000000000001
|
||||
.dword 0xc200000000000000
|
||||
.size Lpolymod,.-Lpolymod
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkg
|
||||
.type gcm_init_rv64i_zvkg,@function
|
||||
gcm_init_rv64i_zvkg:
|
||||
ld a2, 0(a1)
|
||||
ld a3, 8(a1)
|
||||
sb a2, 7(a0)
|
||||
srli t0, a2, 8
|
||||
sb t0, 6(a0)
|
||||
srli t0, a2, 16
|
||||
sb t0, 5(a0)
|
||||
srli t0, a2, 24
|
||||
sb t0, 4(a0)
|
||||
srli t0, a2, 32
|
||||
sb t0, 3(a0)
|
||||
srli t0, a2, 40
|
||||
sb t0, 2(a0)
|
||||
srli t0, a2, 48
|
||||
sb t0, 1(a0)
|
||||
srli t0, a2, 56
|
||||
sb t0, 0(a0)
|
||||
|
||||
sb a3, 15(a0)
|
||||
srli t0, a3, 8
|
||||
sb t0, 14(a0)
|
||||
srli t0, a3, 16
|
||||
sb t0, 13(a0)
|
||||
srli t0, a3, 24
|
||||
sb t0, 12(a0)
|
||||
srli t0, a3, 32
|
||||
sb t0, 11(a0)
|
||||
srli t0, a3, 40
|
||||
sb t0, 10(a0)
|
||||
srli t0, a3, 48
|
||||
sb t0, 9(a0)
|
||||
srli t0, a3, 56
|
||||
sb t0, 8(a0)
|
||||
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkg,.-gcm_init_rv64i_zvkg
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkg_zvkb
|
||||
.type gcm_init_rv64i_zvkg_zvkb,@function
|
||||
gcm_init_rv64i_zvkg_zvkb:
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, ta, ma
|
||||
.word 33943559 # vle64.v v0, (a1)
|
||||
.word 1241817175 # vrev8.v v0, v0
|
||||
.word 33910823 # vse64.v v0, (a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkg_zvkb,.-gcm_init_rv64i_zvkg_zvkb
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zvkg
|
||||
.type gcm_gmult_rv64i_zvkg,@function
|
||||
gcm_gmult_rv64i_zvkg:
|
||||
.word 0xc1027057
|
||||
.word 33939719
|
||||
.word 33906823
|
||||
.word 2720571639
|
||||
.word 33906855
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zvkg,.-gcm_gmult_rv64i_zvkg
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zvkg
|
||||
.type gcm_ghash_rv64i_zvkg,@function
|
||||
gcm_ghash_rv64i_zvkg:
|
||||
.word 0xc1027057
|
||||
.word 33939719
|
||||
.word 33906823
|
||||
|
||||
Lstep:
|
||||
.word 33972615
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
.word 2988548343
|
||||
bnez a3, Lstep
|
||||
|
||||
.word 33906855
|
||||
ret
|
||||
|
||||
.size gcm_ghash_rv64i_zvkg,.-gcm_ghash_rv64i_zvkg
|
||||
@@ -0,0 +1,613 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc
|
||||
.type gcm_init_rv64i_zbc,@function
|
||||
gcm_init_rv64i_zbc:
|
||||
ld a2,0(a1)
|
||||
ld a3,8(a1)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a2, 1
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 1
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a2, 2
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 2
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a2, 4
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 4
|
||||
or a2, t1, a2
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a3, 1
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 1
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a3, 2
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 2
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a3, 4
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 4
|
||||
or a3, t1, a3
|
||||
|
||||
sb a2, 7(a0)
|
||||
srli t0, a2, 8
|
||||
sb t0, 6(a0)
|
||||
srli t0, a2, 16
|
||||
sb t0, 5(a0)
|
||||
srli t0, a2, 24
|
||||
sb t0, 4(a0)
|
||||
srli t0, a2, 32
|
||||
sb t0, 3(a0)
|
||||
srli t0, a2, 40
|
||||
sb t0, 2(a0)
|
||||
srli t0, a2, 48
|
||||
sb t0, 1(a0)
|
||||
srli t0, a2, 56
|
||||
sb t0, 0(a0)
|
||||
|
||||
sb a3, 15(a0)
|
||||
srli t0, a3, 8
|
||||
sb t0, 14(a0)
|
||||
srli t0, a3, 16
|
||||
sb t0, 13(a0)
|
||||
srli t0, a3, 24
|
||||
sb t0, 12(a0)
|
||||
srli t0, a3, 32
|
||||
sb t0, 11(a0)
|
||||
srli t0, a3, 40
|
||||
sb t0, 10(a0)
|
||||
srli t0, a3, 48
|
||||
sb t0, 9(a0)
|
||||
srli t0, a3, 56
|
||||
sb t0, 8(a0)
|
||||
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc,.-gcm_init_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc__zbb
|
||||
.type gcm_init_rv64i_zbc__zbb,@function
|
||||
gcm_init_rv64i_zbc__zbb:
|
||||
ld a2,0(a1)
|
||||
ld a3,8(a1)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a2, 1
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 1
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a2, 2
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 2
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a2, 4
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 4
|
||||
or a2, t1, a2
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a3, 1
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 1
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a3, 2
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 2
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a3, 4
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 4
|
||||
or a3, t1, a3
|
||||
|
||||
.word 1803965971
|
||||
.word 1803998867
|
||||
sd a2,0(a0)
|
||||
sd a3,8(a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc__zbb,.-gcm_init_rv64i_zbc__zbb
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc__zbkb
|
||||
.type gcm_init_rv64i_zbc__zbkb,@function
|
||||
gcm_init_rv64i_zbc__zbkb:
|
||||
ld t0,0(a1)
|
||||
ld t1,8(a1)
|
||||
.word 1752355475
|
||||
.word 1752388371
|
||||
.word 1803735699
|
||||
.word 1803768595
|
||||
sd t0,0(a0)
|
||||
sd t1,8(a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc__zbkb,.-gcm_init_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zbc
|
||||
.type gcm_gmult_rv64i_zbc,@function
|
||||
gcm_gmult_rv64i_zbc:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Bit-reverse Xi back and store it
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zbc,.-gcm_gmult_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zbc__zbkb
|
||||
.type gcm_gmult_rv64i_zbc__zbkb,@function
|
||||
gcm_gmult_rv64i_zbc__zbkb:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Bit-reverse Xi back and store it
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zbc__zbkb,.-gcm_gmult_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zbc
|
||||
.type gcm_ghash_rv64i_zbc,@function
|
||||
gcm_ghash_rv64i_zbc:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
Lstep:
|
||||
# Load the input data, bit-reverse them, and XOR them with Xi
|
||||
ld t4, 0(a2)
|
||||
ld t5, 8(a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, t4, 1
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 1
|
||||
or t4, t1, t4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, t4, 2
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 2
|
||||
or t4, t1, t4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, t4, 4
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 4
|
||||
or t4, t1, t4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, t5, 1
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 1
|
||||
or t5, t1, t5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, t5, 2
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 2
|
||||
or t5, t1, t5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, t5, 4
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 4
|
||||
or t5, t1, t5
|
||||
|
||||
xor a4, a4, t4
|
||||
xor a5, a5, t5
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Iterate over all blocks
|
||||
bnez a3, Lstep
|
||||
|
||||
# Bit-reverse final Xi back and store it
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zbc,.-gcm_ghash_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zbc__zbkb
|
||||
.type gcm_ghash_rv64i_zbc__zbkb,@function
|
||||
gcm_ghash_rv64i_zbc__zbkb:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
Lstep_zkbk:
|
||||
# Load the input data, bit-reverse them, and XOR them with Xi
|
||||
ld t4, 0(a2)
|
||||
ld t5, 8(a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
.word 1753144979
|
||||
.word 1753177875
|
||||
xor a4, a4, t4
|
||||
xor a5, a5, t5
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Iterate over all blocks
|
||||
bnez a3, Lstep_zkbk
|
||||
|
||||
# Bit-reverse final Xi back and store it
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zbc__zbkb,.-gcm_ghash_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
Lbrev8_const:
|
||||
.dword 0xAAAAAAAAAAAAAAAA
|
||||
.dword 0xCCCCCCCCCCCCCCCC
|
||||
.dword 0xF0F0F0F0F0F0F0F0
|
||||
.size Lbrev8_const,.-Lbrev8_const
|
||||
|
||||
Lpolymod:
|
||||
.byte 0x87
|
||||
.size Lpolymod,.-Lpolymod
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,71 @@
|
||||
################################################################################
|
||||
# int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len)
|
||||
################################################################################
|
||||
.text
|
||||
.balign 16
|
||||
.globl CRYPTO_memcmp
|
||||
.type CRYPTO_memcmp,@function
|
||||
CRYPTO_memcmp:
|
||||
li t0,0
|
||||
beqz a2,2f # len == 0
|
||||
1:
|
||||
lbu t1,0(a0)
|
||||
lbu t2,0(a1)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,1
|
||||
addi a2,a2,-1
|
||||
xor t1,t1,t2
|
||||
or t0,t0,t1
|
||||
bgtz a2,1b
|
||||
2:
|
||||
mv a0,t0
|
||||
ret
|
||||
################################################################################
|
||||
# void OPENSSL_cleanse(void *ptr, size_t len)
|
||||
################################################################################
|
||||
.text
|
||||
.balign 16
|
||||
.globl OPENSSL_cleanse
|
||||
.type OPENSSL_cleanse,@function
|
||||
OPENSSL_cleanse:
|
||||
beqz a1,2f # len == 0, return
|
||||
srli t0,a1,4
|
||||
bnez t0,3f # len > 15
|
||||
|
||||
1: # Store <= 15 individual bytes
|
||||
sb x0,0(a0)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,-1
|
||||
bnez a1,1b
|
||||
2:
|
||||
ret
|
||||
|
||||
3: # Store individual bytes until we are aligned
|
||||
andi t0,a0,0x7
|
||||
beqz t0,4f
|
||||
sb x0,0(a0)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,-1
|
||||
j 3b
|
||||
|
||||
4: # Store aligned dwords
|
||||
li t1,8
|
||||
4:
|
||||
sd x0,0(a0)
|
||||
addi a0,a0,8
|
||||
addi a1,a1,-8
|
||||
bge a1,t1,4b # if len>=8 loop
|
||||
bnez a1,1b # if len<8 and len != 0, store remaining bytes
|
||||
ret
|
||||
################################################################################
|
||||
# size_t riscv_vlen_asm(void)
|
||||
# Return VLEN (i.e. the length of a vector register in bits).
|
||||
.p2align 3
|
||||
.globl riscv_vlen_asm
|
||||
.type riscv_vlen_asm,@function
|
||||
riscv_vlen_asm:
|
||||
# 0xc22 is CSR vlenb
|
||||
csrr a0, 0xc22
|
||||
slli a0, a0, 3
|
||||
ret
|
||||
.size riscv_vlen_asm,.-riscv_vlen_asm
|
||||
Vendored
+229
@@ -0,0 +1,229 @@
|
||||
.text
|
||||
.p2align 2
|
||||
.globl sha256_block_data_order_zvkb_zvknha_or_zvknhb
|
||||
.type sha256_block_data_order_zvkb_zvknha_or_zvknhb,@function
|
||||
sha256_block_data_order_zvkb_zvknha_or_zvknhb:
|
||||
.word 3439489111
|
||||
|
||||
la a3, K256 # Load round constants K256
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
addi a3, a3, 16
|
||||
.word 34007047
|
||||
addi a3, a3, 16
|
||||
.word 34007175
|
||||
addi a3, a3, 16
|
||||
.word 34007303
|
||||
addi a3, a3, 16
|
||||
.word 34007431
|
||||
addi a3, a3, 16
|
||||
.word 34007559
|
||||
addi a3, a3, 16
|
||||
.word 34007687
|
||||
addi a3, a3, 16
|
||||
.word 34007815
|
||||
addi a3, a3, 16
|
||||
.word 34007943
|
||||
addi a3, a3, 16
|
||||
.word 34008071
|
||||
addi a3, a3, 16
|
||||
.word 34008199
|
||||
|
||||
|
||||
# H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c}
|
||||
# The dst vtype is e32m1 and the index vtype is e8mf4.
|
||||
# We use index-load with the following index pattern at v26.
|
||||
# i8 index:
|
||||
# 20, 16, 4, 0
|
||||
# Instead of setting the i8 index, we could use a single 32bit
|
||||
# little-endian value to cover the 4xi8 index.
|
||||
# i32 value:
|
||||
# 0x 00 04 10 14
|
||||
li t4, 0x00041014
|
||||
.word 3439390807
|
||||
.word 1578028375
|
||||
|
||||
addi t3, a0, 8
|
||||
|
||||
# Use index-load to get {f,e,b,a},{h,g,d,c}
|
||||
.word 3439489111
|
||||
.word 128254727
|
||||
.word 128844679
|
||||
|
||||
# Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling.
|
||||
# The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking.
|
||||
.word 3422613591
|
||||
.word 1577103447
|
||||
|
||||
.word 3439489111
|
||||
|
||||
L_round_loop:
|
||||
# Decrement length by 1
|
||||
add a2, a2, -1
|
||||
|
||||
# Keep the current state as we need it later: H' = H+{a',b',c',...,h'}.
|
||||
.word 1577258839
|
||||
.word 1577291735
|
||||
|
||||
# Load the 512-bits of the message block in v1-v4 and perform
|
||||
# an endian swap on each 4 bytes element.
|
||||
.word 33939591
|
||||
.word 1242865879
|
||||
add a1, a1, 16
|
||||
.word 33939719
|
||||
.word 1243914583
|
||||
add a1, a1, 16
|
||||
.word 33939847
|
||||
.word 1244963287
|
||||
add a1, a1, 16
|
||||
.word 33939975
|
||||
.word 1246011991
|
||||
add a1, a1, 16
|
||||
|
||||
# Quad-round 0 (+0, Wt from oldest to newest in v1->v2->v3->v4)
|
||||
.word 44073687
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[19:16]
|
||||
|
||||
# Quad-round 1 (+1, v2->v3->v4->v1)
|
||||
.word 45155031
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[23:20]
|
||||
|
||||
# Quad-round 2 (+2, v3->v4->v1->v2)
|
||||
.word 46236375
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[27:24]
|
||||
|
||||
# Quad-round 3 (+3, v4->v1->v2->v3)
|
||||
.word 47317719
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[31:28]
|
||||
|
||||
# Quad-round 4 (+0, v1->v2->v3->v4)
|
||||
.word 48267991
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[35:32]
|
||||
|
||||
# Quad-round 5 (+1, v2->v3->v4->v1)
|
||||
.word 49349335
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[39:36]
|
||||
|
||||
# Quad-round 6 (+2, v3->v4->v1->v2)
|
||||
.word 50430679
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[43:40]
|
||||
|
||||
# Quad-round 7 (+3, v4->v1->v2->v3)
|
||||
.word 51512023
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[47:44]
|
||||
|
||||
# Quad-round 8 (+0, v1->v2->v3->v4)
|
||||
.word 52462295
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[51:48]
|
||||
|
||||
# Quad-round 9 (+1, v2->v3->v4->v1)
|
||||
.word 53543639
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[55:52]
|
||||
|
||||
# Quad-round 10 (+2, v3->v4->v1->v2)
|
||||
.word 54624983
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[59:56]
|
||||
|
||||
# Quad-round 11 (+3, v4->v1->v2->v3)
|
||||
.word 55706327
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[63:60]
|
||||
|
||||
# Quad-round 12 (+0, v1->v2->v3->v4)
|
||||
# Note that we stop generating new message schedule words (Wt, v1-13)
|
||||
# as we already generated all the words we end up consuming (i.e., W[63:60]).
|
||||
.word 56656599
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 13 (+1, v2->v3->v4->v1)
|
||||
.word 57737943
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 14 (+2, v3->v4->v1->v2)
|
||||
.word 58819287
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 15 (+3, v4->v1->v2->v3)
|
||||
.word 59900631
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# H' = H+{a',b',c',...,h'}
|
||||
.word 65209175
|
||||
.word 66290647
|
||||
bnez a2, L_round_loop
|
||||
|
||||
# Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}.
|
||||
.word 128254759
|
||||
.word 128844711
|
||||
|
||||
ret
|
||||
.size sha256_block_data_order_zvkb_zvknha_or_zvknhb,.-sha256_block_data_order_zvkb_zvknha_or_zvknhb
|
||||
|
||||
.p2align 2
|
||||
.type K256,@object
|
||||
K256:
|
||||
.word 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
|
||||
.word 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
|
||||
.word 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
|
||||
.word 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
|
||||
.word 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
|
||||
.word 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
|
||||
.word 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
|
||||
.word 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
|
||||
.word 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
|
||||
.word 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
|
||||
.word 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
|
||||
.word 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
|
||||
.word 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
|
||||
.word 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
|
||||
.word 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
|
||||
.word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||
.size K256,.-K256
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
.text
|
||||
.p2align 2
|
||||
.globl sha512_block_data_order_zvkb_zvknhb
|
||||
.type sha512_block_data_order_zvkb_zvknhb,@function
|
||||
sha512_block_data_order_zvkb_zvknhb:
|
||||
.word 3448926295
|
||||
|
||||
# H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c}
|
||||
# The dst vtype is e64m2 and the index vtype is e8mf4.
|
||||
# We use index-load with the following index pattern at v1.
|
||||
# i8 index:
|
||||
# 40, 32, 8, 0
|
||||
# Instead of setting the i8 index, we could use a single 32bit
|
||||
# little-endian value to cover the 4xi8 index.
|
||||
# i32 value:
|
||||
# 0x 00 08 20 28
|
||||
li t4, 0x00082028
|
||||
.word 3439390807
|
||||
.word 1578025175
|
||||
|
||||
addi t3, a0, 16
|
||||
|
||||
# Use index-load to get {f,e,b,a},{h,g,d,c}
|
||||
.word 3448926295
|
||||
.word 102042375
|
||||
.word 102632455
|
||||
|
||||
# Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling.
|
||||
# The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking.
|
||||
.word 3422613591
|
||||
.word 1577103447
|
||||
|
||||
.word 3448926295
|
||||
|
||||
L_round_loop:
|
||||
# Load round constants K512
|
||||
la a3, K512
|
||||
|
||||
# Decrement length by 1
|
||||
addi a2, a2, -1
|
||||
|
||||
# Keep the current state as we need it later: H' = H+{a',b',c',...,h'}.
|
||||
.word 1577782615
|
||||
.word 1577848407
|
||||
|
||||
# Load the 1024-bits of the message block in v10-v16 and perform the endian
|
||||
# swap.
|
||||
.word 33944839
|
||||
.word 1252304215
|
||||
addi a1, a1, 32
|
||||
.word 33945095
|
||||
.word 1254401623
|
||||
addi a1, a1, 32
|
||||
.word 33945351
|
||||
.word 1256499031
|
||||
addi a1, a1, 32
|
||||
.word 33945607
|
||||
.word 1258596439
|
||||
addi a1, a1, 32
|
||||
|
||||
.rept 4
|
||||
# Quad-round 0 (+0, v10->v12->v14->v16)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54856023
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1558579543
|
||||
.word 3072861559
|
||||
|
||||
# Quad-round 1 (+1, v12->v14->v16->v10)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54921559
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1560742231
|
||||
.word 3072665207
|
||||
|
||||
# Quad-round 2 (+2, v14->v16->v10->v12)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54987095
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1554516311
|
||||
.word 3072730999
|
||||
|
||||
# Quad-round 3 (+3, v16->v10->v12->v14)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 55052631
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1556416855
|
||||
.word 3072796791
|
||||
.endr
|
||||
|
||||
# Quad-round 16 (+0, v10->v12->v14->v16)
|
||||
# Note that we stop generating new message schedule words (Wt, v10-16)
|
||||
# as we already generated all the words we end up consuming (i.e., W[79:76]).
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54856023
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 17 (+1, v12->v14->v16->v10)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54921559
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 18 (+2, v14->v16->v10->v12)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54987095
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 19 (+3, v16->v10->v12->v14)
|
||||
.word 34011655
|
||||
# No t1 increment needed.
|
||||
.word 55052631
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# H' = H+{a',b',c',...,h'}
|
||||
.word 61541207
|
||||
.word 63704151
|
||||
bnez a2, L_round_loop
|
||||
|
||||
# Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}.
|
||||
.word 102042407
|
||||
.word 102632487
|
||||
|
||||
ret
|
||||
.size sha512_block_data_order_zvkb_zvknhb,.-sha512_block_data_order_zvkb_zvknhb
|
||||
|
||||
.p2align 3
|
||||
.type K512,@object
|
||||
K512:
|
||||
.dword 0x428a2f98d728ae22, 0x7137449123ef65cd
|
||||
.dword 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc
|
||||
.dword 0x3956c25bf348b538, 0x59f111f1b605d019
|
||||
.dword 0x923f82a4af194f9b, 0xab1c5ed5da6d8118
|
||||
.dword 0xd807aa98a3030242, 0x12835b0145706fbe
|
||||
.dword 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2
|
||||
.dword 0x72be5d74f27b896f, 0x80deb1fe3b1696b1
|
||||
.dword 0x9bdc06a725c71235, 0xc19bf174cf692694
|
||||
.dword 0xe49b69c19ef14ad2, 0xefbe4786384f25e3
|
||||
.dword 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65
|
||||
.dword 0x2de92c6f592b0275, 0x4a7484aa6ea6e483
|
||||
.dword 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5
|
||||
.dword 0x983e5152ee66dfab, 0xa831c66d2db43210
|
||||
.dword 0xb00327c898fb213f, 0xbf597fc7beef0ee4
|
||||
.dword 0xc6e00bf33da88fc2, 0xd5a79147930aa725
|
||||
.dword 0x06ca6351e003826f, 0x142929670a0e6e70
|
||||
.dword 0x27b70a8546d22ffc, 0x2e1b21385c26c926
|
||||
.dword 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df
|
||||
.dword 0x650a73548baf63de, 0x766a0abb3c77b2a8
|
||||
.dword 0x81c2c92e47edaee6, 0x92722c851482353b
|
||||
.dword 0xa2bfe8a14cf10364, 0xa81a664bbc423001
|
||||
.dword 0xc24b8b70d0f89791, 0xc76c51a30654be30
|
||||
.dword 0xd192e819d6ef5218, 0xd69906245565a910
|
||||
.dword 0xf40e35855771202a, 0x106aa07032bbd1b8
|
||||
.dword 0x19a4c116b8d2d0c8, 0x1e376c085141ab53
|
||||
.dword 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8
|
||||
.dword 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb
|
||||
.dword 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3
|
||||
.dword 0x748f82ee5defb2fc, 0x78a5636f43172f60
|
||||
.dword 0x84c87814a1f0ab72, 0x8cc702081a6439ec
|
||||
.dword 0x90befffa23631e28, 0xa4506cebde82bde9
|
||||
.dword 0xbef9a3f7b2c67915, 0xc67178f2e372532b
|
||||
.dword 0xca273eceea26619c, 0xd186b8c721c0c207
|
||||
.dword 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178
|
||||
.dword 0x06f067aa72176fba, 0x0a637dc5a2c898a6
|
||||
.dword 0x113f9804bef90dae, 0x1b710b35131c471b
|
||||
.dword 0x28db77f523047d84, 0x32caab7b40c72493
|
||||
.dword 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c
|
||||
.dword 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a
|
||||
.dword 0x5fcb6fab3ad6faec, 0x6c44198c4a475817
|
||||
.size K512,.-K512
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
.text
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ossl_hwsm3_block_data_order_zvksh
|
||||
.type ossl_hwsm3_block_data_order_zvksh,@function
|
||||
ossl_hwsm3_block_data_order_zvksh:
|
||||
.word 3440668759
|
||||
|
||||
# Load initial state of hash context (c->A-H).
|
||||
.word 33906695
|
||||
.word 1241817175
|
||||
|
||||
L_sm3_loop:
|
||||
# Copy the previous state to v2.
|
||||
# It will be XOR'ed with the current state at the end of the round.
|
||||
.word 1577058647
|
||||
|
||||
# Load the 64B block in 2x32B chunks.
|
||||
.word 33940231 # v6 := {w7, ..., w0}
|
||||
addi a1, a1, 32
|
||||
|
||||
.word 33940487 # v8 := {w15, ..., w8}
|
||||
addi a1, a1, 32
|
||||
|
||||
addi a2, a2, -1
|
||||
|
||||
# As vsm3c consumes only w0, w1, w4, w5 we need to slide the input
|
||||
# 2 elements down so we process elements w2, w3, w6, w7
|
||||
# This will be repeated for each odd round.
|
||||
.word 1046557271 # v4 := {X, X, w7, ..., w2}
|
||||
|
||||
.word 2925535351
|
||||
.word 2923470967
|
||||
|
||||
# Prepare a vector with {w11, ..., w4}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w7, ..., w4}
|
||||
.word 981611095 # v4 := {w11, w10, w9, w8, w7, w6, w5, w4}
|
||||
|
||||
.word 2923503735
|
||||
.word 1044460119 # v4 := {X, X, w11, w10, w9, w8, w7, w6}
|
||||
.word 2923536503
|
||||
|
||||
.word 2927763575
|
||||
.word 1048654423 # v4 := {X, X, w15, w14, w13, w12, w11, w10}
|
||||
.word 2923602039
|
||||
|
||||
.word 2189632375 # v6 := {w23, w22, w21, w20, w19, w18, w17, w16}
|
||||
|
||||
# Prepare a register with {w19, w18, w17, w16, w15, w14, w13, w12}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w15, w14, w13, w12}
|
||||
.word 979513943 # v4 := {w19, w18, w17, w16, w15, w14, w13, w12}
|
||||
|
||||
.word 2923634807
|
||||
.word 1044460119 # v4 := {X, X, w19, w18, w17, w16, w15, w14}
|
||||
.word 2923667575
|
||||
|
||||
.word 2925797495
|
||||
.word 1046557271 # v4 := {X, X, w23, w22, w21, w20, w19, w18}
|
||||
.word 2923733111
|
||||
|
||||
.word 2187601015 # v8 := {w31, w30, w29, w28, w27, w26, w25, w24}
|
||||
|
||||
# Prepare a register with {w27, w26, w25, w24, w23, w22, w21, w20}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w23, w22, w21, w20}
|
||||
.word 981611095 # v4 := {w27, w26, w25, w24, w23, w22, w21, w20}
|
||||
|
||||
.word 2923765879
|
||||
.word 1044460119 # v4 := {X, X, w27, w26, w25, w24, w23, w22}
|
||||
.word 2923798647
|
||||
|
||||
.word 2928025719
|
||||
.word 1048654423 # v4 := {x, X, w31, w30, w29, w28, w27, w26}
|
||||
.word 2923864183
|
||||
|
||||
.word 2189632375 # v6 := {w32, w33, w34, w35, w36, w37, w38, w39}
|
||||
|
||||
# Prepare a register with {w35, w34, w33, w32, w31, w30, w29, w28}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w31, w30, w29, w28}
|
||||
.word 979513943 # v4 := {w35, w34, w33, w32, w31, w30, w29, w28}
|
||||
|
||||
.word 2923896951
|
||||
.word 1044460119 # v4 := {X, X, w35, w34, w33, w32, w31, w30}
|
||||
.word 2923929719
|
||||
|
||||
.word 2926059639
|
||||
.word 1046557271 # v4 := {X, X, w39, w38, w37, w36, w35, w34}
|
||||
.word 2923995255
|
||||
|
||||
.word 2187601015 # v8 := {w47, w46, w45, w44, w43, w42, w41, w40}
|
||||
|
||||
# Prepare a register with {w43, w42, w41, w40, w39, w38, w37, w36}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w39, w38, w37, w36}
|
||||
.word 981611095 # v4 := {w43, w42, w41, w40, w39, w38, w37, w36}
|
||||
|
||||
.word 2924028023
|
||||
.word 1044460119 # v4 := {X, X, w43, w42, w41, w40, w39, w38}
|
||||
.word 2924060791
|
||||
|
||||
.word 2928287863
|
||||
.word 1048654423 # v4 := {X, X, w47, w46, w45, w44, w43, w42}
|
||||
.word 2924126327
|
||||
|
||||
.word 2189632375 # v6 := {w55, w54, w53, w52, w51, w50, w49, w48}
|
||||
|
||||
# Prepare a register with {w51, w50, w49, w48, w47, w46, w45, w44}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w47, w46, w45, w44}
|
||||
.word 979513943 # v4 := {w51, w50, w49, w48, w47, w46, w45, w44}
|
||||
|
||||
.word 2924159095
|
||||
.word 1044460119 # v4 := {X, X, w51, w50, w49, w48, w47, w46}
|
||||
.word 2924191863
|
||||
|
||||
.word 2926321783
|
||||
.word 1046557271 # v4 := {X, X, w55, w54, w53, w52, w51, w50}
|
||||
.word 2924257399
|
||||
|
||||
.word 2187601015 # v8 := {w63, w62, w61, w60, w59, w58, w57, w56}
|
||||
|
||||
# Prepare a register with {w59, w58, w57, w56, w55, w54, w53, w52}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w55, w54, w53, w52}
|
||||
.word 981611095 # v4 := {w59, w58, w57, w56, w55, w54, w53, w52}
|
||||
|
||||
.word 2924290167
|
||||
.word 1044460119 # v4 := {X, X, w59, w58, w57, w56, w55, w54}
|
||||
.word 2924322935
|
||||
|
||||
.word 2928550007
|
||||
.word 1048654423 # v4 := {X, X, w63, w62, w61, w60, w59, w58}
|
||||
.word 2924388471
|
||||
|
||||
.word 2189632375 # v6 := {w71, w70, w69, w68, w67, w66, w65, w64}
|
||||
|
||||
# Prepare a register with {w67, w66, w65, w64, w63, w62, w61, w60}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w63, w62, w61, w60}
|
||||
.word 979513943 # v4 := {w67, w66, w65, w64, w63, w62, w61, w60}
|
||||
|
||||
.word 2924421239
|
||||
.word 1044460119 # v4 := {X, X, w67, w66, w65, w64, w63, w62}
|
||||
.word 2924454007
|
||||
|
||||
# XOR in the previous state.
|
||||
.word 771817559
|
||||
|
||||
bnez a2, L_sm3_loop # Check if there are any more block to process
|
||||
L_sm3_end:
|
||||
.word 1241817175
|
||||
.word 33906727
|
||||
ret
|
||||
|
||||
.size ossl_hwsm3_block_data_order_zvksh,.-ossl_hwsm3_block_data_order_zvksh
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_set_encrypt_key
|
||||
.type rv64i_zvksed_sm4_set_encrypt_key,@function
|
||||
rv64i_zvksed_sm4_set_encrypt_key:
|
||||
.word 0xc1027057
|
||||
|
||||
# Load the user key
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Load the FK.
|
||||
la t0, FK
|
||||
.word 33743111
|
||||
|
||||
# Generate round keys.
|
||||
.word 772866263
|
||||
.word 2249204215 # rk[0:3]
|
||||
.word 2251334263 # rk[4:7]
|
||||
.word 2252415735 # rk[8:11]
|
||||
.word 2253497207 # rk[12:15]
|
||||
.word 2254578679 # rk[16:19]
|
||||
.word 2255660151 # rk[20:23]
|
||||
.word 2256741623 # rk[24:27]
|
||||
.word 2257823095 # rk[28:31]
|
||||
|
||||
# Store round keys
|
||||
.word 33939879 # rk[0:3]
|
||||
addi a1, a1, 16
|
||||
.word 33940007 # rk[4:7]
|
||||
addi a1, a1, 16
|
||||
.word 33940135 # rk[8:11]
|
||||
addi a1, a1, 16
|
||||
.word 33940263 # rk[12:15]
|
||||
addi a1, a1, 16
|
||||
.word 33940391 # rk[16:19]
|
||||
addi a1, a1, 16
|
||||
.word 33940519 # rk[20:23]
|
||||
addi a1, a1, 16
|
||||
.word 33940647 # rk[24:27]
|
||||
addi a1, a1, 16
|
||||
.word 33940775 # rk[28:31]
|
||||
|
||||
li a0, 1
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_set_encrypt_key,.-rv64i_zvksed_sm4_set_encrypt_key
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_set_decrypt_key
|
||||
.type rv64i_zvksed_sm4_set_decrypt_key,@function
|
||||
rv64i_zvksed_sm4_set_decrypt_key:
|
||||
.word 0xc1027057
|
||||
|
||||
# Load the user key
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Load the FK.
|
||||
la t0, FK
|
||||
.word 33743111
|
||||
|
||||
# Generate round keys.
|
||||
.word 772866263
|
||||
.word 2249204215 # rk[0:3]
|
||||
.word 2251334263 # rk[4:7]
|
||||
.word 2252415735 # rk[8:11]
|
||||
.word 2253497207 # rk[12:15]
|
||||
.word 2254578679 # rk[16:19]
|
||||
.word 2255660151 # rk[20:23]
|
||||
.word 2256741623 # rk[24:27]
|
||||
.word 2257823095 # rk[28:31]
|
||||
|
||||
# Store round keys in reverse order
|
||||
addi a1, a1, 12
|
||||
li t1, -4
|
||||
.word 174449959 # rk[31:28]
|
||||
addi a1, a1, 16
|
||||
.word 174449831 # rk[27:24]
|
||||
addi a1, a1, 16
|
||||
.word 174449703 # rk[23:20]
|
||||
addi a1, a1, 16
|
||||
.word 174449575 # rk[19:16]
|
||||
addi a1, a1, 16
|
||||
.word 174449447 # rk[15:12]
|
||||
addi a1, a1, 16
|
||||
.word 174449319 # rk[11:8]
|
||||
addi a1, a1, 16
|
||||
.word 174449191 # rk[7:4]
|
||||
addi a1, a1, 16
|
||||
.word 174449063 # rk[3:0]
|
||||
|
||||
li a0, 1
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_set_decrypt_key,.-rv64i_zvksed_sm4_set_decrypt_key
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_encrypt
|
||||
.type rv64i_zvksed_sm4_encrypt,@function
|
||||
rv64i_zvksed_sm4_encrypt:
|
||||
.word 0xc1027057
|
||||
|
||||
# Order of elements was adjusted in set_encrypt_key()
|
||||
.word 33972487 # rk[0:3]
|
||||
addi a2, a2, 16
|
||||
.word 33972615 # rk[4:7]
|
||||
addi a2, a2, 16
|
||||
.word 33972743 # rk[8:11]
|
||||
addi a2, a2, 16
|
||||
.word 33972871 # rk[12:15]
|
||||
addi a2, a2, 16
|
||||
.word 33972999 # rk[16:19]
|
||||
addi a2, a2, 16
|
||||
.word 33973127 # rk[20:23]
|
||||
addi a2, a2, 16
|
||||
.word 33973255 # rk[24:27]
|
||||
addi a2, a2, 16
|
||||
.word 33973383 # rk[28:31]
|
||||
|
||||
# Load input data
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Encrypt with all keys
|
||||
.word 2787647735
|
||||
.word 2788696311
|
||||
.word 2789744887
|
||||
.word 2790793463
|
||||
.word 2791842039
|
||||
.word 2792890615
|
||||
.word 2793939191
|
||||
.word 2794987767
|
||||
|
||||
# Save the ciphertext (in reverse element order)
|
||||
.word 1242865879
|
||||
li t0, -4
|
||||
addi a1, a1, 12
|
||||
.word 173400231
|
||||
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_encrypt,.-rv64i_zvksed_sm4_encrypt
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_decrypt
|
||||
.type rv64i_zvksed_sm4_decrypt,@function
|
||||
rv64i_zvksed_sm4_decrypt:
|
||||
.word 0xc1027057
|
||||
|
||||
# Order of elements was adjusted in set_decrypt_key()
|
||||
.word 33973383 # rk[31:28]
|
||||
addi a2, a2, 16
|
||||
.word 33973255 # rk[27:24]
|
||||
addi a2, a2, 16
|
||||
.word 33973127 # rk[23:20]
|
||||
addi a2, a2, 16
|
||||
.word 33972999 # rk[19:16]
|
||||
addi a2, a2, 16
|
||||
.word 33972871 # rk[15:11]
|
||||
addi a2, a2, 16
|
||||
.word 33972743 # rk[11:8]
|
||||
addi a2, a2, 16
|
||||
.word 33972615 # rk[7:4]
|
||||
addi a2, a2, 16
|
||||
.word 33972487 # rk[3:0]
|
||||
|
||||
# Load input data
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Encrypt with all keys
|
||||
.word 2794987767
|
||||
.word 2793939191
|
||||
.word 2792890615
|
||||
.word 2791842039
|
||||
.word 2790793463
|
||||
.word 2789744887
|
||||
.word 2788696311
|
||||
.word 2787647735
|
||||
|
||||
# Save the ciphertext (in reverse element order)
|
||||
.word 1242865879
|
||||
li t0, -4
|
||||
addi a1, a1, 12
|
||||
.word 173400231
|
||||
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_decrypt,.-rv64i_zvksed_sm4_decrypt
|
||||
# Family Key (little-endian 32-bit chunks)
|
||||
.p2align 3
|
||||
FK:
|
||||
.word 0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC
|
||||
.size FK,.-FK
|
||||
@@ -0,0 +1,37 @@
|
||||
/* clang-format off */
|
||||
/* WARNING: do not edit! */
|
||||
/* Generated by Makefile from include/crypto/bn_conf.h.in */
|
||||
/* clang-format on */
|
||||
/*
|
||||
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OSSL_CRYPTO_BN_CONF_H
|
||||
#define OSSL_CRYPTO_BN_CONF_H
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* The contents of this file are not used in the UEFI build, as
|
||||
* both 32-bit and 64-bit builds are supported from a single run
|
||||
* of the Configure script.
|
||||
*/
|
||||
|
||||
/* Should we define BN_DIV2W here? */
|
||||
|
||||
/* Only one for the following should be defined */
|
||||
/* clang-format off */
|
||||
#define SIXTY_FOUR_BIT_LONG
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
#undef SIXTY_FOUR_BIT
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
#undef THIRTY_TWO_BIT
|
||||
/* clang-format on */
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,25 @@
|
||||
/* clang-format off */
|
||||
/* WARNING: do not edit! */
|
||||
/* Generated by Makefile from include/crypto/dso_conf.h.in */
|
||||
/* clang-format on */
|
||||
/*
|
||||
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OSSL_CRYPTO_DSO_CONF_H
|
||||
#define OSSL_CRYPTO_DSO_CONF_H
|
||||
#pragma once
|
||||
|
||||
/* clang-format off */
|
||||
# define DSO_DLFCN
|
||||
# define HAVE_DLFCN_H
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# define DSO_EXTENSION ".so"
|
||||
/* clang-format on */
|
||||
#endif
|
||||
+473
@@ -0,0 +1,473 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/internal/param_names.h.in
|
||||
*
|
||||
* Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
int ossl_param_find_pidx(const char *s);
|
||||
|
||||
/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */
|
||||
/* clang-format off */
|
||||
#define NUM_PIDX 346
|
||||
|
||||
#define PIDX_ALG_PARAM_ALGORITHM_ID 0
|
||||
#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1
|
||||
#define PIDX_ALG_PARAM_CIPHER 2
|
||||
#define PIDX_ALG_PARAM_DIGEST 3
|
||||
#define PIDX_ALG_PARAM_ENGINE 4
|
||||
#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5
|
||||
#define PIDX_ALG_PARAM_MAC 6
|
||||
#define PIDX_ALG_PARAM_PROPERTIES 7
|
||||
#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED
|
||||
#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8
|
||||
#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10
|
||||
#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE
|
||||
#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11
|
||||
#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_ALG 13
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_ID 14
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_NAME 20
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_OID 30
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33
|
||||
#define PIDX_CIPHER_PARAM_AEAD 34
|
||||
#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN
|
||||
#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35
|
||||
#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TAG 37
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44
|
||||
#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45
|
||||
#define PIDX_CIPHER_PARAM_CTS 46
|
||||
#define PIDX_CIPHER_PARAM_CTS_MODE 47
|
||||
#define PIDX_CIPHER_PARAM_CUSTOM_IV 48
|
||||
#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49
|
||||
#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50
|
||||
#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51
|
||||
#define PIDX_CIPHER_PARAM_IV 52
|
||||
#define PIDX_CIPHER_PARAM_IVLEN 53
|
||||
#define PIDX_CIPHER_PARAM_KEYLEN 54
|
||||
#define PIDX_CIPHER_PARAM_MODE 55
|
||||
#define PIDX_CIPHER_PARAM_NUM 56
|
||||
#define PIDX_CIPHER_PARAM_PADDING 57
|
||||
#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58
|
||||
#define PIDX_CIPHER_PARAM_RANDOM_KEY 59
|
||||
#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60
|
||||
#define PIDX_CIPHER_PARAM_ROUNDS 61
|
||||
#define PIDX_CIPHER_PARAM_SPEED 62
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71
|
||||
#define PIDX_CIPHER_PARAM_TLS_MAC 72
|
||||
#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73
|
||||
#define PIDX_CIPHER_PARAM_TLS_VERSION 74
|
||||
#define PIDX_CIPHER_PARAM_UPDATED_IV 75
|
||||
#define PIDX_CIPHER_PARAM_USE_BITS 76
|
||||
#define PIDX_CIPHER_PARAM_XTS_STANDARD 77
|
||||
#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78
|
||||
#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45
|
||||
#define PIDX_DIGEST_PARAM_MICALG 79
|
||||
#define PIDX_DIGEST_PARAM_PAD_TYPE 80
|
||||
#define PIDX_DIGEST_PARAM_SIZE 81
|
||||
#define PIDX_DIGEST_PARAM_SSL3_MS 82
|
||||
#define PIDX_DIGEST_PARAM_XOF 83
|
||||
#define PIDX_DIGEST_PARAM_XOFLEN 84
|
||||
#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85
|
||||
#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC
|
||||
#define PIDX_DRBG_PARAM_MAX_ADINLEN 86
|
||||
#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87
|
||||
#define PIDX_DRBG_PARAM_MAX_LENGTH 88
|
||||
#define PIDX_DRBG_PARAM_MAX_NONCELEN 89
|
||||
#define PIDX_DRBG_PARAM_MAX_PERSLEN 90
|
||||
#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91
|
||||
#define PIDX_DRBG_PARAM_MIN_LENGTH 92
|
||||
#define PIDX_DRBG_PARAM_MIN_NONCELEN 93
|
||||
#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94
|
||||
#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_DRBG_PARAM_RANDOM_DATA 95
|
||||
#define PIDX_DRBG_PARAM_RESEED_COUNTER 96
|
||||
#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97
|
||||
#define PIDX_DRBG_PARAM_RESEED_TIME 98
|
||||
#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99
|
||||
#define PIDX_DRBG_PARAM_SIZE 81
|
||||
#define PIDX_DRBG_PARAM_USE_DF 100
|
||||
#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101
|
||||
#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102
|
||||
#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_UKM 108
|
||||
#define PIDX_EXCHANGE_PARAM_PAD 109
|
||||
#define PIDX_GEN_PARAM_ITERATION 110
|
||||
#define PIDX_GEN_PARAM_POTENTIAL 111
|
||||
#define PIDX_KDF_PARAM_ARGON2_AD 112
|
||||
#define PIDX_KDF_PARAM_ARGON2_LANES 113
|
||||
#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114
|
||||
#define PIDX_KDF_PARAM_ARGON2_VERSION 115
|
||||
#define PIDX_KDF_PARAM_CEK_ALG 116
|
||||
#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_KDF_PARAM_CONSTANT 117
|
||||
#define PIDX_KDF_PARAM_DATA 118
|
||||
#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_KDF_PARAM_EARLY_CLEAN 119
|
||||
#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120
|
||||
#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121
|
||||
#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122
|
||||
#define PIDX_KDF_PARAM_INFO 123
|
||||
#define PIDX_KDF_PARAM_ITER 124
|
||||
#define PIDX_KDF_PARAM_KBKDF_R 125
|
||||
#define PIDX_KDF_PARAM_KBKDF_USE_L 126
|
||||
#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127
|
||||
#define PIDX_KDF_PARAM_KEY 128
|
||||
#define PIDX_KDF_PARAM_LABEL 129
|
||||
#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC
|
||||
#define PIDX_KDF_PARAM_MAC_SIZE 130
|
||||
#define PIDX_KDF_PARAM_MODE 55
|
||||
#define PIDX_KDF_PARAM_PASSWORD 131
|
||||
#define PIDX_KDF_PARAM_PKCS12_ID 132
|
||||
#define PIDX_KDF_PARAM_PKCS5 133
|
||||
#define PIDX_KDF_PARAM_PREFIX 134
|
||||
#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_KDF_PARAM_SALT 135
|
||||
#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136
|
||||
#define PIDX_KDF_PARAM_SCRYPT_N 137
|
||||
#define PIDX_KDF_PARAM_SCRYPT_P 138
|
||||
#define PIDX_KDF_PARAM_SCRYPT_R 125
|
||||
#define PIDX_KDF_PARAM_SECRET 139
|
||||
#define PIDX_KDF_PARAM_SEED 140
|
||||
#define PIDX_KDF_PARAM_SIZE 81
|
||||
#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141
|
||||
#define PIDX_KDF_PARAM_SSHKDF_TYPE 142
|
||||
#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143
|
||||
#define PIDX_KDF_PARAM_THREADS 144
|
||||
#define PIDX_KDF_PARAM_UKM 145
|
||||
#define PIDX_KDF_PARAM_X942_ACVPINFO 146
|
||||
#define PIDX_KDF_PARAM_X942_PARTYUINFO 147
|
||||
#define PIDX_KDF_PARAM_X942_PARTYVINFO 148
|
||||
#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149
|
||||
#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150
|
||||
#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151
|
||||
#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_KEM_PARAM_IKME 152
|
||||
#define PIDX_KEM_PARAM_OPERATION 153
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163
|
||||
#define PIDX_MAC_PARAM_BLOCK_SIZE 164
|
||||
#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_MAC_PARAM_CUSTOM 165
|
||||
#define PIDX_MAC_PARAM_C_ROUNDS 166
|
||||
#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_MAC_PARAM_DIGEST_NOINIT 167
|
||||
#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168
|
||||
#define PIDX_MAC_PARAM_D_ROUNDS 169
|
||||
#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC
|
||||
#define PIDX_MAC_PARAM_IV 52
|
||||
#define PIDX_MAC_PARAM_KEY 128
|
||||
#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_MAC_PARAM_SALT 135
|
||||
#define PIDX_MAC_PARAM_SIZE 81
|
||||
#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170
|
||||
#define PIDX_MAC_PARAM_XOF 83
|
||||
#define PIDX_OBJECT_PARAM_DATA 118
|
||||
#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171
|
||||
#define PIDX_OBJECT_PARAM_DATA_TYPE 172
|
||||
#define PIDX_OBJECT_PARAM_DESC 173
|
||||
#define PIDX_OBJECT_PARAM_INPUT_TYPE 174
|
||||
#define PIDX_OBJECT_PARAM_REFERENCE 175
|
||||
#define PIDX_OBJECT_PARAM_TYPE 142
|
||||
#define PIDX_PASSPHRASE_PARAM_INFO 123
|
||||
#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID
|
||||
#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_PKEY_PARAM_BITS 176
|
||||
#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177
|
||||
#define PIDX_PKEY_PARAM_DHKEM_IKM 178
|
||||
#define PIDX_PKEY_PARAM_DH_GENERATOR 179
|
||||
#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180
|
||||
#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_DIGEST_SIZE 181
|
||||
#define PIDX_PKEY_PARAM_DIST_ID 182
|
||||
#define PIDX_PKEY_PARAM_EC_A 183
|
||||
#define PIDX_PKEY_PARAM_EC_B 184
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_M 185
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190
|
||||
#define PIDX_PKEY_PARAM_EC_COFACTOR 191
|
||||
#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192
|
||||
#define PIDX_PKEY_PARAM_EC_ENCODING 193
|
||||
#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194
|
||||
#define PIDX_PKEY_PARAM_EC_GENERATOR 195
|
||||
#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196
|
||||
#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197
|
||||
#define PIDX_PKEY_PARAM_EC_ORDER 198
|
||||
#define PIDX_PKEY_PARAM_EC_P 138
|
||||
#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199
|
||||
#define PIDX_PKEY_PARAM_EC_PUB_X 200
|
||||
#define PIDX_PKEY_PARAM_EC_PUB_Y 201
|
||||
#define PIDX_PKEY_PARAM_EC_SEED 140
|
||||
#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202
|
||||
#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE
|
||||
#define PIDX_PKEY_PARAM_FFC_COFACTOR 203
|
||||
#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_FFC_G 204
|
||||
#define PIDX_PKEY_PARAM_FFC_GINDEX 205
|
||||
#define PIDX_PKEY_PARAM_FFC_H 206
|
||||
#define PIDX_PKEY_PARAM_FFC_P 138
|
||||
#define PIDX_PKEY_PARAM_FFC_PBITS 207
|
||||
#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208
|
||||
#define PIDX_PKEY_PARAM_FFC_Q 209
|
||||
#define PIDX_PKEY_PARAM_FFC_QBITS 210
|
||||
#define PIDX_PKEY_PARAM_FFC_SEED 140
|
||||
#define PIDX_PKEY_PARAM_FFC_TYPE 142
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213
|
||||
#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214
|
||||
#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215
|
||||
#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216
|
||||
#define PIDX_PKEY_PARAM_GROUP_NAME 217
|
||||
#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8
|
||||
#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218
|
||||
#define PIDX_PKEY_PARAM_MASKGENFUNC 219
|
||||
#define PIDX_PKEY_PARAM_MAX_SIZE 220
|
||||
#define PIDX_PKEY_PARAM_MGF1_DIGEST 221
|
||||
#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_SEED 140
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_SEED 140
|
||||
#define PIDX_PKEY_PARAM_PAD_MODE 232
|
||||
#define PIDX_PKEY_PARAM_PRIV_KEY 233
|
||||
#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_PUB_KEY 234
|
||||
#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244
|
||||
#define PIDX_PKEY_PARAM_RSA_D 245
|
||||
#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246
|
||||
#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_RSA_E 247
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT 248
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR 259
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR1 260
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR10 261
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR2 262
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR3 263
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR4 264
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR5 265
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR6 266
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR7 267
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR8 268
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR9 269
|
||||
#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC
|
||||
#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_PKEY_PARAM_RSA_N 137
|
||||
#define PIDX_PKEY_PARAM_RSA_PRIMES 270
|
||||
#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_P1 272
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_P2 273
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP 276
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281
|
||||
#define PIDX_PKEY_PARAM_SECURITY_BITS 282
|
||||
#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140
|
||||
#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG
|
||||
#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283
|
||||
#define PIDX_PROV_PARAM_BUILDINFO 284
|
||||
#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285
|
||||
#define PIDX_PROV_PARAM_CORE_PROV_NAME 286
|
||||
#define PIDX_PROV_PARAM_CORE_VERSION 287
|
||||
#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288
|
||||
#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289
|
||||
#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290
|
||||
#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291
|
||||
#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292
|
||||
#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293
|
||||
#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294
|
||||
#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295
|
||||
#define PIDX_PROV_PARAM_NAME 296
|
||||
#define PIDX_PROV_PARAM_NO_SHORT_MAC 297
|
||||
#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298
|
||||
#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299
|
||||
#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300
|
||||
#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301
|
||||
#define PIDX_PROV_PARAM_SECURITY_CHECKS 302
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_DESC 303
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305
|
||||
#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306
|
||||
#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307
|
||||
#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308
|
||||
#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309
|
||||
#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310
|
||||
#define PIDX_PROV_PARAM_STATUS 311
|
||||
#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312
|
||||
#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313
|
||||
#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317
|
||||
#define PIDX_PROV_PARAM_VERSION 115
|
||||
#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318
|
||||
#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319
|
||||
#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320
|
||||
#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_RAND_PARAM_GENERATE 321
|
||||
#define PIDX_RAND_PARAM_MAX_REQUEST 322
|
||||
#define PIDX_RAND_PARAM_STATE 323
|
||||
#define PIDX_RAND_PARAM_STRENGTH 324
|
||||
#define PIDX_RAND_PARAM_TEST_ENTROPY 325
|
||||
#define PIDX_RAND_PARAM_TEST_NONCE 326
|
||||
#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327
|
||||
#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID
|
||||
#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328
|
||||
#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329
|
||||
#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331
|
||||
#define PIDX_SIGNATURE_PARAM_INSTANCE 332
|
||||
#define PIDX_SIGNATURE_PARAM_KAT 333
|
||||
#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334
|
||||
#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES
|
||||
#define PIDX_SIGNATURE_PARAM_MU 335
|
||||
#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336
|
||||
#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE
|
||||
#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271
|
||||
#define PIDX_SIGNATURE_PARAM_SIGNATURE 337
|
||||
#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338
|
||||
#define PIDX_SKEY_PARAM_KEY_LENGTH 339
|
||||
#define PIDX_SKEY_PARAM_RAW_BYTES 340
|
||||
#define PIDX_STORE_PARAM_ALIAS 341
|
||||
#define PIDX_STORE_PARAM_DIGEST 3
|
||||
#define PIDX_STORE_PARAM_EXPECT 342
|
||||
#define PIDX_STORE_PARAM_FINGERPRINT 343
|
||||
#define PIDX_STORE_PARAM_INPUT_TYPE 174
|
||||
#define PIDX_STORE_PARAM_ISSUER 296
|
||||
#define PIDX_STORE_PARAM_PROPERTIES 7
|
||||
#define PIDX_STORE_PARAM_SERIAL 344
|
||||
#define PIDX_STORE_PARAM_SUBJECT 345
|
||||
/* clang-format on */
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,935 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/asn1t.h.in
|
||||
*
|
||||
* Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_ASN1T_H
|
||||
#define OPENSSL_ASN1T_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_ASN1T_H
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <openssl/e_os2.h>
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
#ifdef OPENSSL_BUILD_SHLIBCRYPTO
|
||||
#undef OPENSSL_EXTERN
|
||||
#define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||
#endif
|
||||
|
||||
/* ASN1 template defines, structures and functions */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* These are the possible values for the itype field of the
|
||||
* ASN1_ITEM structure and determine how it is interpreted.
|
||||
*
|
||||
* For PRIMITIVE types the underlying type
|
||||
* determines the behaviour if items is NULL.
|
||||
*
|
||||
* Otherwise templates must contain a single
|
||||
* template and the type is treated in the
|
||||
* same way as the type specified in the template.
|
||||
*
|
||||
* For SEQUENCE types the templates field points
|
||||
* to the members, the size field is the
|
||||
* structure size.
|
||||
*
|
||||
* For CHOICE types the templates field points
|
||||
* to each possible member (typically a union)
|
||||
* and the 'size' field is the offset of the
|
||||
* selector.
|
||||
*
|
||||
* The 'funcs' field is used for application-specific
|
||||
* data and functions.
|
||||
*
|
||||
* The EXTERN type uses a new style d2i/i2d.
|
||||
* The new style should be used where possible
|
||||
* because it avoids things like the d2i IMPLICIT
|
||||
* hack.
|
||||
*
|
||||
* MSTRING is a multiple string type, it is used
|
||||
* for a CHOICE of character strings where the
|
||||
* actual strings all occupy an ASN1_STRING
|
||||
* structure. In this case the 'utype' field
|
||||
* has a special meaning, it is used as a mask
|
||||
* of acceptable types using the B_ASN1 constants.
|
||||
*
|
||||
* NDEF_SEQUENCE is the same as SEQUENCE except
|
||||
* that it will use indefinite length constructed
|
||||
* encoding if requested.
|
||||
*
|
||||
*/
|
||||
|
||||
#define ASN1_ITYPE_PRIMITIVE 0x0
|
||||
#define ASN1_ITYPE_SEQUENCE 0x1
|
||||
#define ASN1_ITYPE_CHOICE 0x2
|
||||
/* unused value 0x3 */
|
||||
#define ASN1_ITYPE_EXTERN 0x4
|
||||
#define ASN1_ITYPE_MSTRING 0x5
|
||||
#define ASN1_ITYPE_NDEF_SEQUENCE 0x6
|
||||
|
||||
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
|
||||
#define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)()))
|
||||
|
||||
/* Macros for start and end of ASN1_ITEM definition */
|
||||
|
||||
#define ASN1_ITEM_start(itname) \
|
||||
const ASN1_ITEM *itname##_it(void) \
|
||||
{ \
|
||||
static const ASN1_ITEM local_it = {
|
||||
|
||||
#define static_ASN1_ITEM_start(itname) \
|
||||
static ASN1_ITEM_start(itname)
|
||||
|
||||
#define ASN1_ITEM_end(itname) \
|
||||
} \
|
||||
; \
|
||||
return &local_it; \
|
||||
}
|
||||
|
||||
/* Macros to aid ASN1 template writing */
|
||||
|
||||
#define ASN1_ITEM_TEMPLATE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_item_tt
|
||||
|
||||
#define ASN1_ITEM_TEMPLATE_END(tname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_PRIMITIVE, \
|
||||
-1, \
|
||||
&tname##_item_tt, \
|
||||
0, \
|
||||
NULL, \
|
||||
0, \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
#define static_ASN1_ITEM_TEMPLATE_END(tname) \
|
||||
; \
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_PRIMITIVE, \
|
||||
-1, \
|
||||
&tname##_item_tt, \
|
||||
0, \
|
||||
NULL, \
|
||||
0, \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
|
||||
/* This is a ASN1 type which just embeds a template */
|
||||
|
||||
/*-
|
||||
* This pair helps declare a SEQUENCE. We can do:
|
||||
*
|
||||
* ASN1_SEQUENCE(stname) = {
|
||||
* ... SEQUENCE components ...
|
||||
* } ASN1_SEQUENCE_END(stname)
|
||||
*
|
||||
* This will produce an ASN1_ITEM called stname_it
|
||||
* for a structure called stname.
|
||||
*
|
||||
* If you want the same structure but a different
|
||||
* name then use:
|
||||
*
|
||||
* ASN1_SEQUENCE(itname) = {
|
||||
* ... SEQUENCE components ...
|
||||
* } ASN1_SEQUENCE_END_name(stname, itname)
|
||||
*
|
||||
* This will create an item called itname_it using
|
||||
* a structure called stname.
|
||||
*/
|
||||
|
||||
#define ASN1_SEQUENCE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_seq_tt[]
|
||||
|
||||
#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
|
||||
|
||||
#define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)
|
||||
|
||||
#define ASN1_SEQUENCE_END_name(stname, tname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(stname), \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
|
||||
#define static_ASN1_SEQUENCE_END_name(stname, tname) \
|
||||
; \
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
#define ASN1_NDEF_SEQUENCE(tname) \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
|
||||
ASN1_SEQUENCE_cb(tname, cb)
|
||||
|
||||
#define ASN1_SEQUENCE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_SEQUENCE_const_cb(tname, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb }; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb }; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_SEQUENCE_ref(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL }; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_SEQUENCE_enc(tname, enc, cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL }; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
#define ASN1_NDEF_SEQUENCE_END(tname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(tname), \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
#define static_ASN1_NDEF_SEQUENCE_END(tname) \
|
||||
; \
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(tname), \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
|
||||
#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
|
||||
#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
#define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
|
||||
#define ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
&tname##_aux, \
|
||||
sizeof(stname), \
|
||||
#tname ASN1_ITEM_end(tname)
|
||||
#define static_ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||
; \
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
&tname##_aux, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE, \
|
||||
V_ASN1_SEQUENCE, \
|
||||
tname##_seq_tt, \
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
&tname##_aux, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
/*-
|
||||
* This pair helps declare a CHOICE type. We can do:
|
||||
*
|
||||
* ASN1_CHOICE(chname) = {
|
||||
* ... CHOICE options ...
|
||||
* ASN1_CHOICE_END(chname)
|
||||
*
|
||||
* This will produce an ASN1_ITEM called chname_it
|
||||
* for a structure called chname. The structure
|
||||
* definition must look like this:
|
||||
* typedef struct {
|
||||
* int type;
|
||||
* union {
|
||||
* ASN1_SOMETHING *opt1;
|
||||
* ASN1_SOMEOTHER *opt2;
|
||||
* } value;
|
||||
* } chname;
|
||||
*
|
||||
* the name of the selector must be 'type'.
|
||||
* to use an alternative selector name use the
|
||||
* ASN1_CHOICE_END_selector() version.
|
||||
*/
|
||||
|
||||
#define ASN1_CHOICE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_ch_tt[]
|
||||
|
||||
#define ASN1_CHOICE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \
|
||||
ASN1_CHOICE(tname)
|
||||
|
||||
#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
|
||||
|
||||
#define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)
|
||||
|
||||
#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
|
||||
|
||||
#define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)
|
||||
|
||||
#define ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE, \
|
||||
offsetof(stname, selname), \
|
||||
tname##_ch_tt, \
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
#define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||
; \
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE, \
|
||||
offsetof(stname, selname), \
|
||||
tname##_ch_tt, \
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
NULL, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
#define ASN1_CHOICE_END_cb(stname, tname, selname) \
|
||||
; \
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE, \
|
||||
offsetof(stname, selname), \
|
||||
tname##_ch_tt, \
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \
|
||||
&tname##_aux, \
|
||||
sizeof(stname), \
|
||||
#stname ASN1_ITEM_end(tname)
|
||||
|
||||
/* This helps with the template wrapper form of ASN1_ITEM */
|
||||
|
||||
#define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
|
||||
(flags), (tag), 0, \
|
||||
#name, ASN1_ITEM_ref(type) \
|
||||
}
|
||||
|
||||
/* These help with SEQUENCE or CHOICE components */
|
||||
|
||||
/* used to declare other types */
|
||||
|
||||
#define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
|
||||
(flags), (tag), offsetof(stname, field), \
|
||||
#field, ASN1_ITEM_ref(type) \
|
||||
}
|
||||
|
||||
/* implicit and explicit helper macros */
|
||||
|
||||
#define ASN1_IMP_EX(stname, field, type, tag, ex) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type)
|
||||
|
||||
#define ASN1_EXP_EX(stname, field, type, tag, ex) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type)
|
||||
|
||||
/* Any defined by macros: the field used is in the table itself */
|
||||
|
||||
#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb }
|
||||
#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb }
|
||||
|
||||
/* Plain simple type */
|
||||
#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0, 0, stname, field, type)
|
||||
/* Embedded simple type */
|
||||
#define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED, 0, stname, field, type)
|
||||
|
||||
/* OPTIONAL simple type */
|
||||
#define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
#define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED, 0, stname, field, type)
|
||||
|
||||
/* IMPLICIT tagged simple type */
|
||||
#define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
|
||||
#define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||
|
||||
/* IMPLICIT tagged OPTIONAL simple type */
|
||||
#define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||
#define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED)
|
||||
|
||||
/* Same as above but EXPLICIT */
|
||||
|
||||
#define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
|
||||
#define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||
#define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||
#define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED)
|
||||
|
||||
/* SEQUENCE OF type */
|
||||
#define ASN1_SEQUENCE_OF(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
|
||||
|
||||
/* OPTIONAL SEQUENCE OF */
|
||||
#define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
|
||||
/* Same as above but for SET OF */
|
||||
|
||||
#define ASN1_SET_OF(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
|
||||
|
||||
#define ASN1_SET_OF_OPT(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
|
||||
/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
|
||||
|
||||
#define ASN1_IMP_SET_OF(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||
|
||||
#define ASN1_EXP_SET_OF(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||
|
||||
#define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL)
|
||||
|
||||
#define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL)
|
||||
|
||||
#define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||
|
||||
#define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL)
|
||||
|
||||
#define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||
|
||||
#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL)
|
||||
|
||||
/* EXPLICIT using indefinite length constructed form */
|
||||
#define ASN1_NDEF_EXP(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
|
||||
|
||||
/* EXPLICIT OPTIONAL using indefinite length constructed form */
|
||||
#define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_NDEF)
|
||||
|
||||
/* Macros for the ASN1_ADB structure */
|
||||
|
||||
#define ASN1_ADB(name) \
|
||||
static const ASN1_ADB_TABLE name##_adbtbl[]
|
||||
|
||||
#define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \
|
||||
; \
|
||||
static const ASN1_ITEM *name##_adb(void) \
|
||||
{ \
|
||||
static const ASN1_ADB internal_adb = { \
|
||||
flags, \
|
||||
offsetof(name, field), \
|
||||
adb_cb, \
|
||||
name##_adbtbl, \
|
||||
sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE), \
|
||||
def, \
|
||||
none \
|
||||
}; \
|
||||
return (const ASN1_ITEM *)&internal_adb; \
|
||||
} \
|
||||
void dummy_function(void)
|
||||
|
||||
#define ADB_ENTRY(val, template) { val, template }
|
||||
|
||||
#define ASN1_ADB_TEMPLATE(name) \
|
||||
static const ASN1_TEMPLATE name##_tt
|
||||
|
||||
/*
|
||||
* This is the ASN1 template structure that defines a wrapper round the
|
||||
* actual type. It determines the actual position of the field in the value
|
||||
* structure, various flags such as OPTIONAL and the field name.
|
||||
*/
|
||||
|
||||
struct ASN1_TEMPLATE_st {
|
||||
unsigned long flags; /* Various flags */
|
||||
long tag; /* tag, not used if no tagging */
|
||||
unsigned long offset; /* Offset of this field in structure */
|
||||
const char *field_name; /* Field name */
|
||||
ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
|
||||
};
|
||||
|
||||
/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */
|
||||
|
||||
#define ASN1_TEMPLATE_item(t) (t->item_ptr)
|
||||
#define ASN1_TEMPLATE_adb(t) (t->item_ptr)
|
||||
|
||||
typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
|
||||
typedef struct ASN1_ADB_st ASN1_ADB;
|
||||
|
||||
struct ASN1_ADB_st {
|
||||
unsigned long flags; /* Various flags */
|
||||
unsigned long offset; /* Offset of selector field */
|
||||
int (*adb_cb)(long *psel); /* Application callback */
|
||||
const ASN1_ADB_TABLE *tbl; /* Table of possible types */
|
||||
long tblcount; /* Number of entries in tbl */
|
||||
const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
|
||||
const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
|
||||
};
|
||||
|
||||
struct ASN1_ADB_TABLE_st {
|
||||
long value; /* NID for an object or value for an int */
|
||||
const ASN1_TEMPLATE tt; /* item for this value */
|
||||
};
|
||||
|
||||
/* template flags */
|
||||
|
||||
/* Field is optional */
|
||||
#define ASN1_TFLG_OPTIONAL (0x1)
|
||||
|
||||
/* Field is a SET OF */
|
||||
#define ASN1_TFLG_SET_OF (0x1 << 1)
|
||||
|
||||
/* Field is a SEQUENCE OF */
|
||||
#define ASN1_TFLG_SEQUENCE_OF (0x2 << 1)
|
||||
|
||||
/*
|
||||
* Special case: this refers to a SET OF that will be sorted into DER order
|
||||
* when encoded *and* the corresponding STACK will be modified to match the
|
||||
* new order.
|
||||
*/
|
||||
#define ASN1_TFLG_SET_ORDER (0x3 << 1)
|
||||
|
||||
/* Mask for SET OF or SEQUENCE OF */
|
||||
#define ASN1_TFLG_SK_MASK (0x3 << 1)
|
||||
|
||||
/*
|
||||
* These flags mean the tag should be taken from the tag field. If EXPLICIT
|
||||
* then the underlying type is used for the inner tag.
|
||||
*/
|
||||
|
||||
/* IMPLICIT tagging */
|
||||
#define ASN1_TFLG_IMPTAG (0x1 << 3)
|
||||
|
||||
/* EXPLICIT tagging, inner tag from underlying type */
|
||||
#define ASN1_TFLG_EXPTAG (0x2 << 3)
|
||||
|
||||
#define ASN1_TFLG_TAG_MASK (0x3 << 3)
|
||||
|
||||
/* context specific IMPLICIT */
|
||||
#define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG | ASN1_TFLG_CONTEXT)
|
||||
|
||||
/* context specific EXPLICIT */
|
||||
#define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG | ASN1_TFLG_CONTEXT)
|
||||
|
||||
/*
|
||||
* If tagging is in force these determine the type of tag to use. Otherwise
|
||||
* the tag is determined by the underlying type. These values reflect the
|
||||
* actual octet format.
|
||||
*/
|
||||
|
||||
/* Universal tag */
|
||||
#define ASN1_TFLG_UNIVERSAL (0x0 << 6)
|
||||
/* Application tag */
|
||||
#define ASN1_TFLG_APPLICATION (0x1 << 6)
|
||||
/* Context specific tag */
|
||||
#define ASN1_TFLG_CONTEXT (0x2 << 6)
|
||||
/* Private tag */
|
||||
#define ASN1_TFLG_PRIVATE (0x3 << 6)
|
||||
|
||||
#define ASN1_TFLG_TAG_CLASS (0x3 << 6)
|
||||
|
||||
/*
|
||||
* These are for ANY DEFINED BY type. In this case the 'item' field points to
|
||||
* an ASN1_ADB structure which contains a table of values to decode the
|
||||
* relevant type
|
||||
*/
|
||||
|
||||
#define ASN1_TFLG_ADB_MASK (0x3 << 8)
|
||||
|
||||
#define ASN1_TFLG_ADB_OID (0x1 << 8)
|
||||
|
||||
#define ASN1_TFLG_ADB_INT (0x1 << 9)
|
||||
|
||||
/*
|
||||
* This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes
|
||||
* indefinite length constructed encoding to be used if required.
|
||||
*/
|
||||
|
||||
#define ASN1_TFLG_NDEF (0x1 << 11)
|
||||
|
||||
/* Field is embedded and not a pointer */
|
||||
#define ASN1_TFLG_EMBED (0x1 << 12)
|
||||
|
||||
/* This is the actual ASN1 item itself */
|
||||
|
||||
struct ASN1_ITEM_st {
|
||||
char itype; /* The item type, primitive, SEQUENCE, CHOICE
|
||||
* or extern */
|
||||
long utype; /* underlying type */
|
||||
const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains
|
||||
* the contents */
|
||||
long tcount; /* Number of templates if SEQUENCE or CHOICE */
|
||||
const void *funcs; /* further data and type-specific functions */
|
||||
/* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */
|
||||
long size; /* Structure size (usually) */
|
||||
const char *sname; /* Structure name */
|
||||
};
|
||||
|
||||
/*
|
||||
* Cache for ASN1 tag and length, so we don't keep re-reading it for things
|
||||
* like CHOICE
|
||||
*/
|
||||
|
||||
struct ASN1_TLC_st {
|
||||
char valid; /* Values below are valid */
|
||||
int ret; /* return value */
|
||||
long plen; /* length */
|
||||
int ptag; /* class value */
|
||||
int pclass; /* class value */
|
||||
int hdrlen; /* header length */
|
||||
};
|
||||
|
||||
/* Typedefs for ASN1 function pointers */
|
||||
typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
|
||||
typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
|
||||
int indent, const char *fname,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
|
||||
int *putype, const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
|
||||
int len, int utype, char *free_cont,
|
||||
const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
|
||||
const ASN1_ITEM *it, int indent,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
typedef struct ASN1_EXTERN_FUNCS_st {
|
||||
void *app_data;
|
||||
ASN1_ex_new_func *asn1_ex_new;
|
||||
ASN1_ex_free_func *asn1_ex_free;
|
||||
ASN1_ex_free_func *asn1_ex_clear;
|
||||
ASN1_ex_d2i *asn1_ex_d2i;
|
||||
ASN1_ex_i2d *asn1_ex_i2d;
|
||||
ASN1_ex_print_func *asn1_ex_print;
|
||||
ASN1_ex_new_ex_func *asn1_ex_new_ex;
|
||||
ASN1_ex_d2i_ex *asn1_ex_d2i_ex;
|
||||
} ASN1_EXTERN_FUNCS;
|
||||
|
||||
typedef struct ASN1_PRIMITIVE_FUNCS_st {
|
||||
void *app_data;
|
||||
unsigned long flags;
|
||||
ASN1_ex_new_func *prim_new;
|
||||
ASN1_ex_free_func *prim_free;
|
||||
ASN1_ex_free_func *prim_clear;
|
||||
ASN1_primitive_c2i *prim_c2i;
|
||||
ASN1_primitive_i2c *prim_i2c;
|
||||
ASN1_primitive_print *prim_print;
|
||||
} ASN1_PRIMITIVE_FUNCS;
|
||||
|
||||
/*
|
||||
* This is the ASN1_AUX structure: it handles various miscellaneous
|
||||
* requirements. For example the use of reference counts and an informational
|
||||
* callback. The "informational callback" is called at various points during
|
||||
* the ASN1 encoding and decoding. It can be used to provide minor
|
||||
* customisation of the structures used. This is most useful where the
|
||||
* supplied routines *almost* do the right thing but need some extra help at
|
||||
* a few points. If the callback returns zero then it is assumed a fatal
|
||||
* error has occurred and the main operation should be abandoned. If major
|
||||
* changes in the default behaviour are required then an external type is
|
||||
* more appropriate.
|
||||
* For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
|
||||
* ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
|
||||
* 'in' is provided to make clear statically that its input is not modified. If
|
||||
* and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
|
||||
*/
|
||||
|
||||
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
|
||||
void *exarg);
|
||||
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
|
||||
const ASN1_ITEM *it, void *exarg);
|
||||
|
||||
typedef struct ASN1_AUX_st {
|
||||
void *app_data;
|
||||
int flags;
|
||||
int ref_offset; /* Offset of reference value */
|
||||
int ref_lock; /* Offset of lock value */
|
||||
ASN1_aux_cb *asn1_cb;
|
||||
int enc_offset; /* Offset of ASN1_ENCODING structure */
|
||||
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
|
||||
} ASN1_AUX;
|
||||
|
||||
/* For print related callbacks exarg points to this structure */
|
||||
typedef struct ASN1_PRINT_ARG_st {
|
||||
BIO *out;
|
||||
int indent;
|
||||
const ASN1_PCTX *pctx;
|
||||
} ASN1_PRINT_ARG;
|
||||
|
||||
/* For streaming related callbacks exarg points to this structure */
|
||||
typedef struct ASN1_STREAM_ARG_st {
|
||||
/* BIO to stream through */
|
||||
BIO *out;
|
||||
/* BIO with filters appended */
|
||||
BIO *ndef_bio;
|
||||
/* Streaming I/O boundary */
|
||||
unsigned char **boundary;
|
||||
} ASN1_STREAM_ARG;
|
||||
|
||||
/* Flags in ASN1_AUX */
|
||||
|
||||
/* Use a reference count */
|
||||
#define ASN1_AFLG_REFCOUNT 1
|
||||
/* Save the encoding of structure (useful for signatures) */
|
||||
#define ASN1_AFLG_ENCODING 2
|
||||
/* The Sequence length is invalid */
|
||||
#define ASN1_AFLG_BROKEN 4
|
||||
/* Use the new asn1_const_cb */
|
||||
#define ASN1_AFLG_CONST_CB 8
|
||||
|
||||
/* operation values for asn1_cb */
|
||||
|
||||
#define ASN1_OP_NEW_PRE 0
|
||||
#define ASN1_OP_NEW_POST 1
|
||||
#define ASN1_OP_FREE_PRE 2
|
||||
#define ASN1_OP_FREE_POST 3
|
||||
#define ASN1_OP_D2I_PRE 4
|
||||
#define ASN1_OP_D2I_POST 5
|
||||
#define ASN1_OP_I2D_PRE 6
|
||||
#define ASN1_OP_I2D_POST 7
|
||||
#define ASN1_OP_PRINT_PRE 8
|
||||
#define ASN1_OP_PRINT_POST 9
|
||||
#define ASN1_OP_STREAM_PRE 10
|
||||
#define ASN1_OP_STREAM_POST 11
|
||||
#define ASN1_OP_DETACHED_PRE 12
|
||||
#define ASN1_OP_DETACHED_POST 13
|
||||
#define ASN1_OP_DUP_PRE 14
|
||||
#define ASN1_OP_DUP_POST 15
|
||||
#define ASN1_OP_GET0_LIBCTX 16
|
||||
#define ASN1_OP_GET0_PROPQ 17
|
||||
|
||||
/* Macro to implement a primitive type */
|
||||
#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
|
||||
#define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
|
||||
ASN1_ITEM_start(itname) \
|
||||
ASN1_ITYPE_PRIMITIVE, \
|
||||
V_##vname, NULL, 0, NULL, ex, #itname ASN1_ITEM_end(itname)
|
||||
|
||||
/* Macro to implement a multi string type */
|
||||
#define IMPLEMENT_ASN1_MSTRING(itname, mask) \
|
||||
ASN1_ITEM_start(itname) \
|
||||
ASN1_ITYPE_MSTRING, \
|
||||
mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname ASN1_ITEM_end(itname)
|
||||
|
||||
#define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
|
||||
ASN1_ITEM_start(sname) \
|
||||
ASN1_ITYPE_EXTERN, \
|
||||
tag, \
|
||||
NULL, \
|
||||
0, \
|
||||
&fptrs, \
|
||||
0, \
|
||||
#sname ASN1_ITEM_end(sname)
|
||||
|
||||
/* Macro to implement standard functions in terms of ASN1_ITEM structures */
|
||||
|
||||
#define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
|
||||
|
||||
#define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
|
||||
|
||||
#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
|
||||
IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
|
||||
|
||||
#define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
|
||||
|
||||
#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
|
||||
|
||||
#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
|
||||
pre stname *fname##_new(void) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||
} \
|
||||
pre void fname##_free(stname *a) \
|
||||
{ \
|
||||
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
|
||||
stname *fname##_new(void) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||
} \
|
||||
void fname##_free(stname *a) \
|
||||
{ \
|
||||
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||
stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname)); \
|
||||
} \
|
||||
int i2d_##fname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
|
||||
int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \
|
||||
static stname *d2i_##stname(stname **a, \
|
||||
const unsigned char **in, long len) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
} \
|
||||
static int i2d_##stname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((const ASN1_VALUE *)a, out, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
|
||||
stname *stname##_dup(const stname *x) \
|
||||
{ \
|
||||
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
|
||||
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
||||
|
||||
#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
||||
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||
const ASN1_PCTX *pctx) \
|
||||
{ \
|
||||
return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \
|
||||
ASN1_ITEM_rptr(itname), pctx); \
|
||||
}
|
||||
|
||||
/* external definitions for primitive types */
|
||||
|
||||
DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
|
||||
DECLARE_ASN1_ITEM(CBIGNUM)
|
||||
DECLARE_ASN1_ITEM(BIGNUM)
|
||||
DECLARE_ASN1_ITEM(INT32)
|
||||
DECLARE_ASN1_ITEM(ZINT32)
|
||||
DECLARE_ASN1_ITEM(UINT32)
|
||||
DECLARE_ASN1_ITEM(ZUINT32)
|
||||
DECLARE_ASN1_ITEM(INT64)
|
||||
DECLARE_ASN1_ITEM(ZINT64)
|
||||
DECLARE_ASN1_ITEM(UINT64)
|
||||
DECLARE_ASN1_ITEM(ZUINT64)
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
/*
|
||||
* LONG and ZLONG are strongly discouraged for use as stored data, as the
|
||||
* underlying C type (long) differs in size depending on the architecture.
|
||||
* They are designed with 32-bit longs in mind.
|
||||
*/
|
||||
DECLARE_ASN1_ITEM(LONG)
|
||||
DECLARE_ASN1_ITEM(ZLONG)
|
||||
#endif
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE)
|
||||
#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx)))
|
||||
#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp)))
|
||||
#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null())
|
||||
#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n)))
|
||||
#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n))
|
||||
#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i)))
|
||||
#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)))
|
||||
#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc))
|
||||
#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx))
|
||||
#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr)))
|
||||
#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum)
|
||||
#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc)))
|
||||
#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* Functions used internally by the ASN1 code */
|
||||
|
||||
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
|
||||
int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
|
||||
/* Legacy compatibility */
|
||||
#define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
|
||||
#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,741 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/cmp.h.in
|
||||
*
|
||||
* Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CMP_H
|
||||
#define OPENSSL_CMP_H
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
#ifndef OPENSSL_NO_CMP
|
||||
|
||||
#include <openssl/crmf.h>
|
||||
#include <openssl/cmperr.h>
|
||||
#include <openssl/cmp_util.h>
|
||||
#include <openssl/http.h>
|
||||
|
||||
/* explicit #includes not strictly needed since implied by the above: */
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OSSL_CMP_PVNO_2 2
|
||||
#define OSSL_CMP_PVNO_3 3
|
||||
#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */
|
||||
|
||||
/*-
|
||||
* PKIFailureInfo ::= BIT STRING {
|
||||
* -- since we can fail in more than one way!
|
||||
* -- More codes may be added in the future if/when required.
|
||||
* badAlg (0),
|
||||
* -- unrecognized or unsupported Algorithm Identifier
|
||||
* badMessageCheck (1),
|
||||
* -- integrity check failed (e.g., signature did not verify)
|
||||
* badRequest (2),
|
||||
* -- transaction not permitted or supported
|
||||
* badTime (3),
|
||||
* -- messageTime was not sufficiently close to the system time,
|
||||
* -- as defined by local policy
|
||||
* badCertId (4),
|
||||
* -- no certificate could be found matching the provided criteria
|
||||
* badDataFormat (5),
|
||||
* -- the data submitted has the wrong format
|
||||
* wrongAuthority (6),
|
||||
* -- the authority indicated in the request is different from the
|
||||
* -- one creating the response token
|
||||
* incorrectData (7),
|
||||
* -- the requester's data is incorrect (for notary services)
|
||||
* missingTimeStamp (8),
|
||||
* -- when the timestamp is missing but should be there
|
||||
* -- (by policy)
|
||||
* badPOP (9),
|
||||
* -- the proof-of-possession failed
|
||||
* certRevoked (10),
|
||||
* -- the certificate has already been revoked
|
||||
* certConfirmed (11),
|
||||
* -- the certificate has already been confirmed
|
||||
* wrongIntegrity (12),
|
||||
* -- invalid integrity, password based instead of signature or
|
||||
* -- vice versa
|
||||
* badRecipientNonce (13),
|
||||
* -- invalid recipient nonce, either missing or wrong value
|
||||
* timeNotAvailable (14),
|
||||
* -- the TSA's time source is not available
|
||||
* unacceptedPolicy (15),
|
||||
* -- the requested TSA policy is not supported by the TSA.
|
||||
* unacceptedExtension (16),
|
||||
* -- the requested extension is not supported by the TSA.
|
||||
* addInfoNotAvailable (17),
|
||||
* -- the additional information requested could not be
|
||||
* -- understood or is not available
|
||||
* badSenderNonce (18),
|
||||
* -- invalid sender nonce, either missing or wrong size
|
||||
* badCertTemplate (19),
|
||||
* -- invalid cert. template or missing mandatory information
|
||||
* signerNotTrusted (20),
|
||||
* -- signer of the message unknown or not trusted
|
||||
* transactionIdInUse (21),
|
||||
* -- the transaction identifier is already in use
|
||||
* unsupportedVersion (22),
|
||||
* -- the version of the message is not supported
|
||||
* notAuthorized (23),
|
||||
* -- the sender was not authorized to make the preceding
|
||||
* -- request or perform the preceding action
|
||||
* systemUnavail (24),
|
||||
* -- the request cannot be handled due to system unavailability
|
||||
* systemFailure (25),
|
||||
* -- the request cannot be handled due to system failure
|
||||
* duplicateCertReq (26)
|
||||
* -- certificate cannot be issued because a duplicate
|
||||
* -- certificate already exists
|
||||
* }
|
||||
*/
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badAlg 0
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badRequest 2
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badTime 3
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badCertId 4
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5
|
||||
#define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6
|
||||
#define OSSL_CMP_PKIFAILUREINFO_incorrectData 7
|
||||
#define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badPOP 9
|
||||
#define OSSL_CMP_PKIFAILUREINFO_certRevoked 10
|
||||
#define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11
|
||||
#define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13
|
||||
#define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14
|
||||
#define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15
|
||||
#define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16
|
||||
#define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18
|
||||
#define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19
|
||||
#define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20
|
||||
#define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21
|
||||
#define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22
|
||||
#define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23
|
||||
#define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24
|
||||
#define OSSL_CMP_PKIFAILUREINFO_systemFailure 25
|
||||
#define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26
|
||||
#define OSSL_CMP_PKIFAILUREINFO_MAX 26
|
||||
#define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \
|
||||
((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1)
|
||||
#if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX
|
||||
#error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int
|
||||
#endif
|
||||
typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO;
|
||||
|
||||
#define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5)
|
||||
#define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6)
|
||||
#define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7)
|
||||
#define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9)
|
||||
#define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10)
|
||||
#define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11)
|
||||
#define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13)
|
||||
#define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14)
|
||||
#define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15)
|
||||
#define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16)
|
||||
#define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18)
|
||||
#define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19)
|
||||
#define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20)
|
||||
#define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21)
|
||||
#define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22)
|
||||
#define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23)
|
||||
#define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24)
|
||||
#define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25)
|
||||
#define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26)
|
||||
|
||||
/*-
|
||||
* PKIStatus ::= INTEGER {
|
||||
* accepted (0),
|
||||
* -- you got exactly what you asked for
|
||||
* grantedWithMods (1),
|
||||
* -- you got something like what you asked for; the
|
||||
* -- requester is responsible for ascertaining the differences
|
||||
* rejection (2),
|
||||
* -- you don't get it, more information elsewhere in the message
|
||||
* waiting (3),
|
||||
* -- the request body part has not yet been processed; expect to
|
||||
* -- hear more later (note: proper handling of this status
|
||||
* -- response MAY use the polling req/rep PKIMessages specified
|
||||
* -- in Section 5.3.22; alternatively, polling in the underlying
|
||||
* -- transport layer MAY have some utility in this regard)
|
||||
* revocationWarning (4),
|
||||
* -- this message contains a warning that a revocation is
|
||||
* -- imminent
|
||||
* revocationNotification (5),
|
||||
* -- notification that a revocation has occurred
|
||||
* keyUpdateWarning (6)
|
||||
* -- update already done for the oldCertId specified in
|
||||
* -- CertReqMsg
|
||||
* }
|
||||
*/
|
||||
#define OSSL_CMP_PKISTATUS_rejected_by_client -5
|
||||
#define OSSL_CMP_PKISTATUS_checking_response -4
|
||||
#define OSSL_CMP_PKISTATUS_request -3
|
||||
#define OSSL_CMP_PKISTATUS_trans -2
|
||||
#define OSSL_CMP_PKISTATUS_unspecified -1
|
||||
#define OSSL_CMP_PKISTATUS_accepted 0
|
||||
#define OSSL_CMP_PKISTATUS_grantedWithMods 1
|
||||
#define OSSL_CMP_PKISTATUS_rejection 2
|
||||
#define OSSL_CMP_PKISTATUS_waiting 3
|
||||
#define OSSL_CMP_PKISTATUS_revocationWarning 4
|
||||
#define OSSL_CMP_PKISTATUS_revocationNotification 5
|
||||
#define OSSL_CMP_PKISTATUS_keyUpdateWarning 6
|
||||
typedef ASN1_INTEGER OSSL_CMP_PKISTATUS;
|
||||
|
||||
DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS)
|
||||
|
||||
#define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0
|
||||
#define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1
|
||||
|
||||
/* data type declarations */
|
||||
typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX;
|
||||
typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER)
|
||||
typedef struct ossl_cmp_msg_st OSSL_CMP_MSG;
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG)
|
||||
typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS)
|
||||
#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV;
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV)
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV)
|
||||
#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))
|
||||
#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
|
||||
#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
|
||||
#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)))
|
||||
#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
|
||||
#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
|
||||
#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr)))
|
||||
#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
|
||||
#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
|
||||
#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
|
||||
#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))
|
||||
#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS)
|
||||
#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV;
|
||||
#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free
|
||||
typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS)
|
||||
#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE
|
||||
#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num
|
||||
#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value
|
||||
#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push
|
||||
#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free
|
||||
|
||||
typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT;
|
||||
typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI)
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI)
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI)
|
||||
#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))
|
||||
#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
|
||||
#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
|
||||
#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)))
|
||||
#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
|
||||
#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
|
||||
#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr)))
|
||||
#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
|
||||
#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
|
||||
#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
|
||||
#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))
|
||||
#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE)
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP;
|
||||
typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT;
|
||||
typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE)
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum)
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT;
|
||||
|
||||
/*
|
||||
* function DECLARATIONS
|
||||
*/
|
||||
|
||||
/* from cmp_asn.c */
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value);
|
||||
void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type,
|
||||
ASN1_TYPE *value);
|
||||
ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav);
|
||||
ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav);
|
||||
int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p,
|
||||
OSSL_CMP_ITAV *itav);
|
||||
void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav);
|
||||
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING)
|
||||
*certProfile);
|
||||
int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav,
|
||||
STACK_OF(ASN1_UTF8STRING) **out);
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts);
|
||||
int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out);
|
||||
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert);
|
||||
int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out);
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew,
|
||||
const X509 *newWithOld,
|
||||
const X509 *oldWithNew);
|
||||
int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav,
|
||||
X509 **newWithNew,
|
||||
X509 **newWithOld,
|
||||
X509 **oldWithNew);
|
||||
|
||||
OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl,
|
||||
const X509 *cert, int only_DN);
|
||||
OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn,
|
||||
const GENERAL_NAMES *issuer,
|
||||
const ASN1_TIME *thisUpdate);
|
||||
int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus,
|
||||
DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer,
|
||||
ASN1_TIME **thisUpdate);
|
||||
void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus);
|
||||
OSSL_CMP_ITAV
|
||||
*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList);
|
||||
int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav,
|
||||
STACK_OF(OSSL_CMP_CRLSTATUS) **out);
|
||||
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls);
|
||||
int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out);
|
||||
OSSL_CMP_ITAV
|
||||
*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate,
|
||||
OSSL_CMP_ATAVS *keySpec);
|
||||
int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav,
|
||||
OSSL_CRMF_CERTTEMPLATE **certTemplate,
|
||||
OSSL_CMP_ATAVS **keySpec);
|
||||
|
||||
OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value);
|
||||
void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type,
|
||||
ASN1_TYPE *value);
|
||||
ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav);
|
||||
ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav);
|
||||
OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg);
|
||||
X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav);
|
||||
OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len);
|
||||
int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav);
|
||||
int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav);
|
||||
|
||||
void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg);
|
||||
|
||||
/* from cmp_ctx.c */
|
||||
OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx);
|
||||
int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx);
|
||||
OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx);
|
||||
const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx);
|
||||
/* CMP general options: */
|
||||
#define OSSL_CMP_OPT_LOG_VERBOSITY 0
|
||||
/* CMP transfer options: */
|
||||
#define OSSL_CMP_OPT_KEEP_ALIVE 10
|
||||
#define OSSL_CMP_OPT_MSG_TIMEOUT 11
|
||||
#define OSSL_CMP_OPT_TOTAL_TIMEOUT 12
|
||||
#define OSSL_CMP_OPT_USE_TLS 13
|
||||
/* CMP request options: */
|
||||
#define OSSL_CMP_OPT_VALIDITY_DAYS 20
|
||||
#define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21
|
||||
#define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22
|
||||
#define OSSL_CMP_OPT_POLICIES_CRITICAL 23
|
||||
#define OSSL_CMP_OPT_POPO_METHOD 24
|
||||
#define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25
|
||||
#define OSSL_CMP_OPT_DISABLE_CONFIRM 26
|
||||
#define OSSL_CMP_OPT_REVOCATION_REASON 27
|
||||
/* CMP protection options: */
|
||||
#define OSSL_CMP_OPT_UNPROTECTED_SEND 30
|
||||
#define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31
|
||||
#define OSSL_CMP_OPT_OWF_ALGNID 32
|
||||
#define OSSL_CMP_OPT_MAC_ALGNID 33
|
||||
#define OSSL_CMP_OPT_DIGEST_ALGNID 34
|
||||
#define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35
|
||||
#define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36
|
||||
#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37
|
||||
int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val);
|
||||
int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt);
|
||||
/* CMP-specific callback for logging and outputting the error queue: */
|
||||
int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb);
|
||||
#define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \
|
||||
OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level)
|
||||
void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx);
|
||||
/* message transfer: */
|
||||
int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path);
|
||||
int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address);
|
||||
int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port);
|
||||
int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name);
|
||||
int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names);
|
||||
#ifndef OPENSSL_NO_HTTP
|
||||
int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||
void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||
#endif
|
||||
typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t)(OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||
void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||
/* server authentication: */
|
||||
int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||
int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store);
|
||||
#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore
|
||||
X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx);
|
||||
#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore
|
||||
int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs);
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx);
|
||||
/* client authentication: */
|
||||
int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted,
|
||||
STACK_OF(X509) *candidates);
|
||||
int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey);
|
||||
int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx,
|
||||
const unsigned char *ref, int len);
|
||||
int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx,
|
||||
const unsigned char *sec, int len);
|
||||
/* CMP message header and extra certificates: */
|
||||
int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||
int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
|
||||
int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx);
|
||||
STACK_OF(OSSL_CMP_ITAV)
|
||||
*OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx);
|
||||
int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx,
|
||||
STACK_OF(X509) *extraCertsOut);
|
||||
/* certificate template: */
|
||||
int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey);
|
||||
EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv);
|
||||
int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||
int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn);
|
||||
int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||
int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx,
|
||||
const GENERAL_NAME *name);
|
||||
int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts);
|
||||
int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx);
|
||||
int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo);
|
||||
int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr);
|
||||
/* misc body contents: */
|
||||
int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
|
||||
/* certificate confirmation: */
|
||||
typedef int (*OSSL_CMP_certConf_cb_t)(OSSL_CMP_CTX *ctx, X509 *cert,
|
||||
int fail_info, const char **txt);
|
||||
int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info,
|
||||
const char **text);
|
||||
int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||
void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||
/* result fetching: */
|
||||
int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx);
|
||||
OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx);
|
||||
int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx);
|
||||
#define OSSL_CMP_PKISI_BUFLEN 1024
|
||||
X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx);
|
||||
X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx);
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx);
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx);
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx);
|
||||
int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx,
|
||||
const ASN1_OCTET_STRING *id);
|
||||
int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx,
|
||||
const ASN1_OCTET_STRING *nonce);
|
||||
|
||||
/* from cmp_status.c */
|
||||
char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf,
|
||||
size_t bufsize);
|
||||
char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo,
|
||||
char *buf, size_t bufsize);
|
||||
OSSL_CMP_PKISI *
|
||||
OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text);
|
||||
|
||||
/* from cmp_hdr.c */
|
||||
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr);
|
||||
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr);
|
||||
STACK_OF(OSSL_CMP_ITAV)
|
||||
*OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr);
|
||||
|
||||
/* from cmp_msg.c */
|
||||
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg);
|
||||
X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||
OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid);
|
||||
OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg);
|
||||
OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg);
|
||||
int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg);
|
||||
|
||||
/* from cmp_vfy.c */
|
||||
int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx,
|
||||
X509_STORE *trusted_store, X509 *cert);
|
||||
|
||||
/* from cmp_http.c */
|
||||
#ifndef OPENSSL_NO_HTTP
|
||||
OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
#endif
|
||||
|
||||
/* from cmp_server.c */
|
||||
typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX;
|
||||
OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
OSSL_CMP_MSG *OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx);
|
||||
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId,
|
||||
const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr,
|
||||
X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs);
|
||||
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
const X509_NAME *issuer,
|
||||
const ASN1_INTEGER *serial);
|
||||
typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
const STACK_OF(OSSL_CMP_ITAV) *in,
|
||||
STACK_OF(OSSL_CMP_ITAV) **out);
|
||||
typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
const OSSL_CMP_PKISI *statusInfo,
|
||||
const ASN1_INTEGER *errorCode,
|
||||
const OSSL_CMP_PKIFREETEXT *errDetails);
|
||||
typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
int certReqId,
|
||||
const ASN1_OCTET_STRING *certHash,
|
||||
const OSSL_CMP_PKISI *si);
|
||||
typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req, int certReqId,
|
||||
OSSL_CMP_MSG **certReq,
|
||||
int64_t *check_after);
|
||||
int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx,
|
||||
OSSL_CMP_SRV_cert_request_cb_t process_cert_request,
|
||||
OSSL_CMP_SRV_rr_cb_t process_rr,
|
||||
OSSL_CMP_SRV_genm_cb_t process_genm,
|
||||
OSSL_CMP_SRV_error_cb_t process_error,
|
||||
OSSL_CMP_SRV_certConf_cb_t process_certConf,
|
||||
OSSL_CMP_SRV_pollReq_cb_t process_pollReq);
|
||||
typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
const ASN1_OCTET_STRING *id);
|
||||
int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
OSSL_CMP_SRV_delayed_delivery_cb_t delay,
|
||||
OSSL_CMP_SRV_clean_transaction_cb_t clean);
|
||||
OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
|
||||
void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
|
||||
int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
int val);
|
||||
int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val);
|
||||
int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val);
|
||||
int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
int val);
|
||||
|
||||
/* from cmp_client.c */
|
||||
X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type,
|
||||
const OSSL_CRMF_MSG *crm);
|
||||
#define OSSL_CMP_IR 0
|
||||
#define OSSL_CMP_CR 2
|
||||
#define OSSL_CMP_P10CR 4
|
||||
#define OSSL_CMP_KUR 7
|
||||
#define OSSL_CMP_GENM 21
|
||||
#define OSSL_CMP_ERROR 23
|
||||
#define OSSL_CMP_exec_IR_ses(ctx) \
|
||||
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL)
|
||||
#define OSSL_CMP_exec_CR_ses(ctx) \
|
||||
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL)
|
||||
#define OSSL_CMP_exec_P10CR_ses(ctx) \
|
||||
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL)
|
||||
#define OSSL_CMP_exec_KUR_ses(ctx) \
|
||||
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL)
|
||||
int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type,
|
||||
const OSSL_CRMF_MSG *crm, int *checkAfter);
|
||||
int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx);
|
||||
STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx);
|
||||
|
||||
/* from cmp_genm.c */
|
||||
int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out);
|
||||
int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx,
|
||||
const X509 *oldWithOld, X509 **newWithNew,
|
||||
X509 **newWithOld, X509 **oldWithNew);
|
||||
int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert,
|
||||
const X509_CRL *last_crl,
|
||||
X509_CRL **crl);
|
||||
int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx,
|
||||
OSSL_CRMF_CERTTEMPLATE **certTemplate,
|
||||
OSSL_CMP_ATAVS **keySpec);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !defined(OPENSSL_NO_CMP) */
|
||||
#endif /* !defined(OPENSSL_CMP_H) */
|
||||
@@ -0,0 +1,515 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/cms.h.in
|
||||
*
|
||||
* Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CMS_H
|
||||
#define OPENSSL_CMS_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_CMS_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_CMS
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/cmserr.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct CMS_EnvelopedData_st CMS_EnvelopedData;
|
||||
typedef struct CMS_ContentInfo_st CMS_ContentInfo;
|
||||
typedef struct CMS_SignerInfo_st CMS_SignerInfo;
|
||||
typedef struct CMS_SignedData_st CMS_SignedData;
|
||||
typedef struct CMS_CertificateChoices CMS_CertificateChoices;
|
||||
typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
|
||||
typedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
|
||||
typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
|
||||
typedef struct CMS_Receipt_st CMS_Receipt;
|
||||
typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey;
|
||||
typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo)
|
||||
#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk))
|
||||
#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx)))
|
||||
#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp)))
|
||||
#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null())
|
||||
#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n)))
|
||||
#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n))
|
||||
#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk))
|
||||
#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk))
|
||||
#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i)))
|
||||
#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)))
|
||||
#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
|
||||
#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
|
||||
#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk)))
|
||||
#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk)))
|
||||
#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc))
|
||||
#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx))
|
||||
#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr)))
|
||||
#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
|
||||
#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
|
||||
#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum)
|
||||
#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk))
|
||||
#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk))
|
||||
#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk)))
|
||||
#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)))
|
||||
#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey)
|
||||
#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))
|
||||
#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx)))
|
||||
#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp)))
|
||||
#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null())
|
||||
#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n)))
|
||||
#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n))
|
||||
#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
|
||||
#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
|
||||
#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i)))
|
||||
#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)))
|
||||
#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
|
||||
#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
|
||||
#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)))
|
||||
#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)))
|
||||
#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))
|
||||
#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx))
|
||||
#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr)))
|
||||
#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
|
||||
#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
|
||||
#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum)
|
||||
#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
|
||||
#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))
|
||||
#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)))
|
||||
#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)))
|
||||
#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo)
|
||||
#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk))
|
||||
#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx)))
|
||||
#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp)))
|
||||
#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null())
|
||||
#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n)))
|
||||
#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n))
|
||||
#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk))
|
||||
#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk))
|
||||
#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i)))
|
||||
#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)))
|
||||
#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
|
||||
#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
|
||||
#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk)))
|
||||
#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk)))
|
||||
#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))
|
||||
#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx))
|
||||
#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr)))
|
||||
#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
|
||||
#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
|
||||
#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum)
|
||||
#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk))
|
||||
#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk))
|
||||
#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk)))
|
||||
#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)))
|
||||
#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice)
|
||||
#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))
|
||||
#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx)))
|
||||
#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp)))
|
||||
#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null())
|
||||
#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n)))
|
||||
#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n))
|
||||
#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
|
||||
#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
|
||||
#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i)))
|
||||
#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)))
|
||||
#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
|
||||
#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
|
||||
#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)))
|
||||
#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)))
|
||||
#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))
|
||||
#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx))
|
||||
#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr)))
|
||||
#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
|
||||
#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
|
||||
#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum)
|
||||
#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
|
||||
#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))
|
||||
#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)))
|
||||
#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)))
|
||||
#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
DECLARE_ASN1_ITEM(CMS_EnvelopedData)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData)
|
||||
DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
|
||||
DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
|
||||
DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
|
||||
|
||||
DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData)
|
||||
|
||||
CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
#define CMS_SIGNERINFO_ISSUER_SERIAL 0
|
||||
#define CMS_SIGNERINFO_KEYIDENTIFIER 1
|
||||
|
||||
#define CMS_RECIPINFO_NONE -1
|
||||
#define CMS_RECIPINFO_TRANS 0
|
||||
#define CMS_RECIPINFO_AGREE 1
|
||||
#define CMS_RECIPINFO_KEK 2
|
||||
#define CMS_RECIPINFO_PASS 3
|
||||
#define CMS_RECIPINFO_OTHER 4
|
||||
|
||||
/* S/MIME related flags */
|
||||
|
||||
#define CMS_TEXT 0x1
|
||||
#define CMS_NOCERTS 0x2
|
||||
#define CMS_NO_CONTENT_VERIFY 0x4
|
||||
#define CMS_NO_ATTR_VERIFY 0x8
|
||||
#define CMS_NOSIGS \
|
||||
(CMS_NO_CONTENT_VERIFY | CMS_NO_ATTR_VERIFY)
|
||||
#define CMS_NOINTERN 0x10
|
||||
#define CMS_NO_SIGNER_CERT_VERIFY 0x20
|
||||
#define CMS_NOVERIFY 0x20
|
||||
#define CMS_DETACHED 0x40
|
||||
#define CMS_BINARY 0x80
|
||||
#define CMS_NOATTR 0x100
|
||||
#define CMS_NOSMIMECAP 0x200
|
||||
#define CMS_NOOLDMIMETYPE 0x400
|
||||
#define CMS_CRLFEOL 0x800
|
||||
#define CMS_STREAM 0x1000
|
||||
#define CMS_NOCRL 0x2000
|
||||
#define CMS_PARTIAL 0x4000
|
||||
#define CMS_REUSE_DIGEST 0x8000
|
||||
#define CMS_USE_KEYID 0x10000
|
||||
#define CMS_DEBUG_DECRYPT 0x20000
|
||||
#define CMS_KEY_PARAM 0x40000
|
||||
#define CMS_ASCIICRLF 0x80000
|
||||
#define CMS_CADES 0x100000
|
||||
#define CMS_USE_ORIGINATOR_KEYID 0x200000
|
||||
#define CMS_NO_SIGNING_TIME 0x400000
|
||||
|
||||
const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
|
||||
|
||||
BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
|
||||
int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
|
||||
|
||||
ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
|
||||
int CMS_is_detached(CMS_ContentInfo *cms);
|
||||
int CMS_set_detached(CMS_ContentInfo *cms, int detached);
|
||||
|
||||
#ifdef OPENSSL_PEM_H
|
||||
DECLARE_PEM_rw(CMS, CMS_ContentInfo)
|
||||
#endif
|
||||
int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
|
||||
CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
|
||||
int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
|
||||
|
||||
BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
|
||||
int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
|
||||
int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in,
|
||||
int flags);
|
||||
CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
|
||||
CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci);
|
||||
int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
|
||||
|
||||
int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont,
|
||||
unsigned int flags);
|
||||
int CMS_final_digest(CMS_ContentInfo *cms,
|
||||
const unsigned char *md, unsigned int mdlen, BIO *dcont,
|
||||
unsigned int flags);
|
||||
|
||||
CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
|
||||
STACK_OF(X509) *certs, BIO *data,
|
||||
unsigned int flags);
|
||||
CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey,
|
||||
STACK_OF(X509) *certs, BIO *data,
|
||||
unsigned int flags, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
|
||||
X509 *signcert, EVP_PKEY *pkey,
|
||||
STACK_OF(X509) *certs, unsigned int flags);
|
||||
|
||||
int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
|
||||
CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
|
||||
CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
|
||||
unsigned int flags);
|
||||
CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
|
||||
unsigned int flags);
|
||||
CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md,
|
||||
unsigned int flags, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
|
||||
const unsigned char *key, size_t keylen,
|
||||
BIO *dcont, BIO *out, unsigned int flags);
|
||||
CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher,
|
||||
const unsigned char *key,
|
||||
size_t keylen, unsigned int flags);
|
||||
CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher,
|
||||
const unsigned char *key,
|
||||
size_t keylen, unsigned int flags,
|
||||
OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph,
|
||||
const unsigned char *key, size_t keylen);
|
||||
|
||||
int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
|
||||
X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
|
||||
|
||||
int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
|
||||
STACK_OF(X509) *certs,
|
||||
X509_STORE *store, unsigned int flags);
|
||||
|
||||
STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms);
|
||||
|
||||
CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in,
|
||||
const EVP_CIPHER *cipher, unsigned int flags);
|
||||
CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in,
|
||||
const EVP_CIPHER *cipher, unsigned int flags,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert,
|
||||
BIO *dcont, BIO *out, unsigned int flags);
|
||||
|
||||
int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
|
||||
int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk,
|
||||
X509 *cert, X509 *peer);
|
||||
int CMS_decrypt_set1_key(CMS_ContentInfo *cms,
|
||||
unsigned char *key, size_t keylen,
|
||||
const unsigned char *id, size_t idlen);
|
||||
int CMS_decrypt_set1_password(CMS_ContentInfo *cms,
|
||||
unsigned char *pass, ossl_ssize_t passlen);
|
||||
|
||||
STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms);
|
||||
int CMS_RecipientInfo_type(CMS_RecipientInfo *ri);
|
||||
EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri);
|
||||
CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher);
|
||||
CMS_ContentInfo *
|
||||
CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
|
||||
CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher,
|
||||
OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data,
|
||||
EVP_PKEY *pkey, X509 *cert,
|
||||
ASN1_OCTET_STRING *secret, unsigned int flags,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms,
|
||||
X509 *recip, unsigned int flags);
|
||||
CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip,
|
||||
EVP_PKEY *originatorPrivKey, X509 *originator, unsigned int flags);
|
||||
int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey);
|
||||
int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert);
|
||||
int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri,
|
||||
EVP_PKEY **pk, X509 **recip,
|
||||
X509_ALGOR **palg);
|
||||
int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri,
|
||||
ASN1_OCTET_STRING **keyid,
|
||||
X509_NAME **issuer,
|
||||
ASN1_INTEGER **sno);
|
||||
|
||||
CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid,
|
||||
unsigned char *key, size_t keylen,
|
||||
unsigned char *id, size_t idlen,
|
||||
ASN1_GENERALIZEDTIME *date,
|
||||
ASN1_OBJECT *otherTypeId,
|
||||
ASN1_TYPE *otherType);
|
||||
|
||||
int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri,
|
||||
X509_ALGOR **palg,
|
||||
ASN1_OCTET_STRING **pid,
|
||||
ASN1_GENERALIZEDTIME **pdate,
|
||||
ASN1_OBJECT **potherid,
|
||||
ASN1_TYPE **pothertype);
|
||||
|
||||
int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri,
|
||||
unsigned char *key, size_t keylen);
|
||||
|
||||
int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri,
|
||||
const unsigned char *id, size_t idlen);
|
||||
|
||||
int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri,
|
||||
unsigned char *pass,
|
||||
ossl_ssize_t passlen);
|
||||
|
||||
CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
|
||||
int iter, int wrap_nid,
|
||||
int pbe_nid,
|
||||
unsigned char *pass,
|
||||
ossl_ssize_t passlen,
|
||||
const EVP_CIPHER *kekciph);
|
||||
|
||||
int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||
int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||
|
||||
int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
|
||||
unsigned int flags);
|
||||
CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);
|
||||
|
||||
int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
|
||||
const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
|
||||
|
||||
CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
|
||||
int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
|
||||
int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
|
||||
STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
|
||||
|
||||
CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
|
||||
int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
|
||||
int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
|
||||
STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
|
||||
|
||||
int CMS_SignedData_init(CMS_ContentInfo *cms);
|
||||
CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
|
||||
X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
|
||||
unsigned int flags);
|
||||
EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si);
|
||||
EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si);
|
||||
STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
|
||||
|
||||
void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
|
||||
int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
|
||||
ASN1_OCTET_STRING **keyid,
|
||||
X509_NAME **issuer, ASN1_INTEGER **sno);
|
||||
int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
|
||||
int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
|
||||
unsigned int flags);
|
||||
void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
|
||||
X509 **signer, X509_ALGOR **pdig,
|
||||
X509_ALGOR **psig);
|
||||
ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si);
|
||||
int CMS_SignerInfo_sign(CMS_SignerInfo *si);
|
||||
int CMS_SignerInfo_verify(CMS_SignerInfo *si);
|
||||
int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
|
||||
BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data,
|
||||
STACK_OF(X509) *scerts, X509_STORE *store,
|
||||
STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls,
|
||||
unsigned int flags,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
|
||||
int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
|
||||
int algnid, int keysize);
|
||||
int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
|
||||
|
||||
int CMS_signed_get_attr_count(const CMS_SignerInfo *si);
|
||||
int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
|
||||
int lastpos);
|
||||
int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
|
||||
X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
|
||||
int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
|
||||
int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
|
||||
const ASN1_OBJECT *obj, int type,
|
||||
const void *bytes, int len);
|
||||
int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
|
||||
int nid, int type,
|
||||
const void *bytes, int len);
|
||||
int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
|
||||
const char *attrname, int type,
|
||||
const void *bytes, int len);
|
||||
void *CMS_signed_get0_data_by_OBJ(const CMS_SignerInfo *si,
|
||||
const ASN1_OBJECT *oid,
|
||||
int lastpos, int type);
|
||||
|
||||
int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
|
||||
int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
|
||||
int lastpos);
|
||||
int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si,
|
||||
const ASN1_OBJECT *obj, int lastpos);
|
||||
X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
|
||||
X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
|
||||
int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
|
||||
int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
|
||||
const ASN1_OBJECT *obj, int type,
|
||||
const void *bytes, int len);
|
||||
int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
|
||||
int nid, int type,
|
||||
const void *bytes, int len);
|
||||
int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
|
||||
const char *attrname, int type,
|
||||
const void *bytes, int len);
|
||||
void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
|
||||
int lastpos, int type);
|
||||
|
||||
int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
|
||||
CMS_ReceiptRequest *CMS_ReceiptRequest_create0(
|
||||
unsigned char *id, int idlen, int allorfirst,
|
||||
STACK_OF(GENERAL_NAMES) *receiptList,
|
||||
STACK_OF(GENERAL_NAMES) *receiptsTo);
|
||||
CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex(
|
||||
unsigned char *id, int idlen, int allorfirst,
|
||||
STACK_OF(GENERAL_NAMES) *receiptList,
|
||||
STACK_OF(GENERAL_NAMES) *receiptsTo,
|
||||
OSSL_LIB_CTX *libctx);
|
||||
|
||||
int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
|
||||
void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
|
||||
ASN1_STRING **pcid,
|
||||
int *pallorfirst,
|
||||
STACK_OF(GENERAL_NAMES) **plist,
|
||||
STACK_OF(GENERAL_NAMES) **prto);
|
||||
int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri,
|
||||
X509_ALGOR **palg,
|
||||
ASN1_OCTET_STRING **pukm);
|
||||
STACK_OF(CMS_RecipientEncryptedKey)
|
||||
*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri);
|
||||
|
||||
int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri,
|
||||
X509_ALGOR **pubalg,
|
||||
ASN1_BIT_STRING **pubkey,
|
||||
ASN1_OCTET_STRING **keyid,
|
||||
X509_NAME **issuer,
|
||||
ASN1_INTEGER **sno);
|
||||
|
||||
int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert);
|
||||
|
||||
int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek,
|
||||
ASN1_OCTET_STRING **keyid,
|
||||
ASN1_GENERALIZEDTIME **tm,
|
||||
CMS_OtherKeyAttribute **other,
|
||||
X509_NAME **issuer, ASN1_INTEGER **sno);
|
||||
int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek,
|
||||
X509 *cert);
|
||||
int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk);
|
||||
int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer);
|
||||
EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri);
|
||||
int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
|
||||
CMS_RecipientInfo *ri,
|
||||
CMS_RecipientEncryptedKey *rek);
|
||||
|
||||
int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
|
||||
ASN1_OCTET_STRING *ukm, int keylen);
|
||||
|
||||
/* Backward compatibility for spelling errors. */
|
||||
#define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM
|
||||
#define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \
|
||||
CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_COMP_H
|
||||
#define OPENSSL_COMP_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_COMP_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/comperr.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_COMP
|
||||
|
||||
COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
|
||||
const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx);
|
||||
int COMP_CTX_get_type(const COMP_CTX *comp);
|
||||
int COMP_get_type(const COMP_METHOD *meth);
|
||||
const char *COMP_get_name(const COMP_METHOD *meth);
|
||||
void COMP_CTX_free(COMP_CTX *ctx);
|
||||
|
||||
int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
||||
unsigned char *in, int ilen);
|
||||
int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
||||
unsigned char *in, int ilen);
|
||||
|
||||
COMP_METHOD *COMP_zlib(void);
|
||||
COMP_METHOD *COMP_zlib_oneshot(void);
|
||||
COMP_METHOD *COMP_brotli(void);
|
||||
COMP_METHOD *COMP_brotli_oneshot(void);
|
||||
COMP_METHOD *COMP_zstd(void);
|
||||
COMP_METHOD *COMP_zstd_oneshot(void);
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define COMP_zlib_cleanup() \
|
||||
while (0) \
|
||||
continue
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_BIO_H
|
||||
const BIO_METHOD *BIO_f_zlib(void);
|
||||
const BIO_METHOD *BIO_f_brotli(void);
|
||||
const BIO_METHOD *BIO_f_zstd(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct ssl_comp_st SSL_COMP;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP)
|
||||
#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk))
|
||||
#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx)))
|
||||
#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp)))
|
||||
#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null())
|
||||
#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n)))
|
||||
#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n))
|
||||
#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk))
|
||||
#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk))
|
||||
#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i)))
|
||||
#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)))
|
||||
#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
|
||||
#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
|
||||
#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk)))
|
||||
#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk)))
|
||||
#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc))
|
||||
#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx))
|
||||
#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr)))
|
||||
#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
|
||||
#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
|
||||
#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum)
|
||||
#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk))
|
||||
#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk))
|
||||
#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk)))
|
||||
#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc)))
|
||||
#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,219 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/conf.h.in
|
||||
*
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CONF_H
|
||||
#define OPENSSL_CONF_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_CONF_H
|
||||
#endif
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/lhash.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/e_os2.h>
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/conferr.h>
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
char *section;
|
||||
char *name;
|
||||
char *value;
|
||||
} CONF_VALUE;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE)
|
||||
#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk))
|
||||
#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx)))
|
||||
#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp)))
|
||||
#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null())
|
||||
#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n)))
|
||||
#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n))
|
||||
#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk))
|
||||
#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk))
|
||||
#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i)))
|
||||
#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)))
|
||||
#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
|
||||
#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
|
||||
#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk)))
|
||||
#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk)))
|
||||
#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc))
|
||||
#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx))
|
||||
#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr)))
|
||||
#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
|
||||
#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
|
||||
#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum)
|
||||
#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk))
|
||||
#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk))
|
||||
#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk)))
|
||||
#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc)))
|
||||
#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp)))
|
||||
DEFINE_LHASH_OF_INTERNAL(CONF_VALUE);
|
||||
#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk))
|
||||
#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh))
|
||||
#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh))
|
||||
#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr)))
|
||||
#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr)))
|
||||
#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr)))
|
||||
#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh))
|
||||
#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh))
|
||||
#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
|
||||
#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
|
||||
#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
|
||||
#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh))
|
||||
#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl)
|
||||
#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
struct conf_st;
|
||||
struct conf_method_st;
|
||||
typedef struct conf_method_st CONF_METHOD;
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#include <openssl/conftypes.h>
|
||||
#endif
|
||||
|
||||
/* Module definitions */
|
||||
typedef struct conf_imodule_st CONF_IMODULE;
|
||||
typedef struct conf_module_st CONF_MODULE;
|
||||
|
||||
STACK_OF(CONF_MODULE);
|
||||
STACK_OF(CONF_IMODULE);
|
||||
|
||||
/* DSO module function typedefs */
|
||||
typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf);
|
||||
typedef void conf_finish_func(CONF_IMODULE *md);
|
||||
|
||||
#define CONF_MFLAGS_IGNORE_ERRORS 0x1
|
||||
#define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
|
||||
#define CONF_MFLAGS_SILENT 0x4
|
||||
#define CONF_MFLAGS_NO_DSO 0x8
|
||||
#define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
|
||||
#define CONF_MFLAGS_DEFAULT_SECTION 0x20
|
||||
|
||||
int CONF_set_default_method(CONF_METHOD *meth);
|
||||
void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
|
||||
LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
|
||||
long *eline);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
|
||||
long *eline);
|
||||
#endif
|
||||
LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,
|
||||
long *eline);
|
||||
STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
|
||||
const char *section);
|
||||
char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name);
|
||||
long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name);
|
||||
void CONF_free(LHASH_OF(CONF_VALUE) *conf);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
|
||||
#endif
|
||||
int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name);
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define OPENSSL_no_config() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* New conf code. The semantics are different from the functions above. If
|
||||
* that wasn't the case, the above functions would have been replaced
|
||||
*/
|
||||
|
||||
CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth);
|
||||
OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf);
|
||||
CONF *NCONF_new(CONF_METHOD *meth);
|
||||
CONF_METHOD *NCONF_default(void);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void);
|
||||
#endif
|
||||
void NCONF_free(CONF *conf);
|
||||
void NCONF_free_data(CONF *conf);
|
||||
|
||||
int NCONF_load(CONF *conf, const char *file, long *eline);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
int NCONF_load_fp(CONF *conf, FILE *fp, long *eline);
|
||||
#endif
|
||||
int NCONF_load_bio(CONF *conf, BIO *bp, long *eline);
|
||||
STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf);
|
||||
STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf,
|
||||
const char *section);
|
||||
char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
|
||||
int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
|
||||
long *result);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
int NCONF_dump_fp(const CONF *conf, FILE *out);
|
||||
#endif
|
||||
int NCONF_dump_bio(const CONF *conf, BIO *out);
|
||||
|
||||
#define NCONF_get_number(c, g, n, r) NCONF_get_number_e(c, g, n, r)
|
||||
|
||||
/* Module functions */
|
||||
|
||||
int CONF_modules_load(const CONF *cnf, const char *appname,
|
||||
unsigned long flags);
|
||||
int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename,
|
||||
const char *appname, unsigned long flags);
|
||||
int CONF_modules_load_file(const char *filename, const char *appname,
|
||||
unsigned long flags);
|
||||
void CONF_modules_unload(int all);
|
||||
void CONF_modules_finish(void);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define CONF_modules_free() \
|
||||
while (0) \
|
||||
continue
|
||||
#endif
|
||||
int CONF_module_add(const char *name, conf_init_func *ifunc,
|
||||
conf_finish_func *ffunc);
|
||||
|
||||
const char *CONF_imodule_get_name(const CONF_IMODULE *md);
|
||||
const char *CONF_imodule_get_value(const CONF_IMODULE *md);
|
||||
void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
|
||||
CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
|
||||
unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
|
||||
void *CONF_module_get_usr_data(CONF_MODULE *pmod);
|
||||
void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
|
||||
|
||||
char *CONF_get1_default_config_file(void);
|
||||
|
||||
int CONF_parse_list(const char *list, int sep, int nospc,
|
||||
int (*list_cb)(const char *elem, int len, void *usr),
|
||||
void *arg);
|
||||
|
||||
void OPENSSL_load_builtin_modules(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
+190
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl
|
||||
* via Makefile.in
|
||||
*
|
||||
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_CONFIGURATION_H
|
||||
#define OPENSSL_CONFIGURATION_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_ALGORITHM_DEFINES
|
||||
#error OPENSSL_ALGORITHM_DEFINES no longer supported
|
||||
#endif
|
||||
|
||||
/*
|
||||
* OpenSSL was configured with the following options:
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
# define OPENSSL_CONFIGURED_API 30500
|
||||
# ifndef OPENSSL_RAND_SEED_OS
|
||||
# define OPENSSL_RAND_SEED_OS
|
||||
# endif
|
||||
# ifndef OPENSSL_THREADS
|
||||
# define OPENSSL_THREADS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_AFALGENG
|
||||
# define OPENSSL_NO_AFALGENG
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_ASAN
|
||||
# define OPENSSL_NO_ASAN
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_BROTLI_DYNAMIC
|
||||
# define OPENSSL_NO_BROTLI_DYNAMIC
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_CRYPTO_MDEBUG
|
||||
# define OPENSSL_NO_CRYPTO_MDEBUG
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||
# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DEMOS
|
||||
# define OPENSSL_NO_DEMOS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DEVCRYPTOENG
|
||||
# define OPENSSL_NO_DEVCRYPTOENG
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
|
||||
# define OPENSSL_NO_EC_NISTP_64_GCC_128
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EGD
|
||||
# define OPENSSL_NO_EGD
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EXTERNAL_TESTS
|
||||
# define OPENSSL_NO_EXTERNAL_TESTS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_FIPS_JITTER
|
||||
# define OPENSSL_NO_FIPS_JITTER
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_FUZZ_AFL
|
||||
# define OPENSSL_NO_FUZZ_AFL
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_FUZZ_LIBFUZZER
|
||||
# define OPENSSL_NO_FUZZ_LIBFUZZER
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_H3DEMO
|
||||
# define OPENSSL_NO_H3DEMO
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_HQINTEROP
|
||||
# define OPENSSL_NO_HQINTEROP
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_JITTER
|
||||
# define OPENSSL_NO_JITTER
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_KTLS
|
||||
# define OPENSSL_NO_KTLS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_LOADERENG
|
||||
# define OPENSSL_NO_LOADERENG
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_MD2
|
||||
# define OPENSSL_NO_MD2
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_MSAN
|
||||
# define OPENSSL_NO_MSAN
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_PIE
|
||||
# define OPENSSL_NO_PIE
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_RC5
|
||||
# define OPENSSL_NO_RC5
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_SCTP
|
||||
# define OPENSSL_NO_SCTP
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_SSL3
|
||||
# define OPENSSL_NO_SSL3
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_SSL3_METHOD
|
||||
# define OPENSSL_NO_SSL3_METHOD
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_SSLKEYLOG
|
||||
# define OPENSSL_NO_SSLKEYLOG
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_TESTS
|
||||
# define OPENSSL_NO_TESTS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_TFO
|
||||
# define OPENSSL_NO_TFO
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_TRACE
|
||||
# define OPENSSL_NO_TRACE
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_UBSAN
|
||||
# define OPENSSL_NO_UBSAN
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_UNIT_TEST
|
||||
# define OPENSSL_NO_UNIT_TEST
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_UPLINK
|
||||
# define OPENSSL_NO_UPLINK
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
|
||||
# define OPENSSL_NO_WEAK_SSL_CIPHERS
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_WINSTORE
|
||||
# define OPENSSL_NO_WINSTORE
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_ZLIB_DYNAMIC
|
||||
# define OPENSSL_NO_ZLIB_DYNAMIC
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_ZSTD_DYNAMIC
|
||||
# define OPENSSL_NO_ZSTD_DYNAMIC
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DYNAMIC_ENGINE
|
||||
# define OPENSSL_NO_DYNAMIC_ENGINE
|
||||
# endif
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* Generate 80386 code? */
|
||||
/* clang-format off */
|
||||
# undef I386_ONLY
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* The following are cipher-specific, but are part of the public API.
|
||||
*/
|
||||
#if !defined(OPENSSL_SYS_UEFI)
|
||||
/* clang-format off */
|
||||
# undef BN_LLONG
|
||||
/* clang-format on */
|
||||
/* Only one for the following should be defined */
|
||||
/* clang-format off */
|
||||
# define SIXTY_FOUR_BIT_LONG
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# undef SIXTY_FOUR_BIT
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# undef THIRTY_TWO_BIT
|
||||
/* clang-format on */
|
||||
#endif
|
||||
|
||||
/* clang-format off */
|
||||
# define RC4_INT unsigned char
|
||||
/* clang-format on */
|
||||
|
||||
#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB))
|
||||
#define OPENSSL_NO_COMP_ALG
|
||||
#else
|
||||
#undef OPENSSL_NO_COMP_ALG
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* OPENSSL_CONFIGURATION_H */
|
||||
@@ -0,0 +1,579 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/core_names.h.in
|
||||
*
|
||||
* Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CORE_NAMES_H
|
||||
#define OPENSSL_CORE_NAMES_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* OSSL_CIPHER_PARAM_CTS_MODE Values */
|
||||
#define OSSL_CIPHER_CTS_MODE_CS1 "CS1"
|
||||
#define OSSL_CIPHER_CTS_MODE_CS2 "CS2"
|
||||
#define OSSL_CIPHER_CTS_MODE_CS3 "CS3"
|
||||
|
||||
/* Known CIPHER names (not a complete list) */
|
||||
#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV"
|
||||
#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV"
|
||||
#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV"
|
||||
|
||||
/* Known DIGEST names (not a complete list) */
|
||||
#define OSSL_DIGEST_NAME_MD5 "MD5"
|
||||
#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1"
|
||||
#define OSSL_DIGEST_NAME_SHA1 "SHA1"
|
||||
#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224"
|
||||
#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256"
|
||||
#define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192"
|
||||
#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384"
|
||||
#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512"
|
||||
#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224"
|
||||
#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256"
|
||||
#define OSSL_DIGEST_NAME_MD2 "MD2"
|
||||
#define OSSL_DIGEST_NAME_MD4 "MD4"
|
||||
#define OSSL_DIGEST_NAME_MDC2 "MDC2"
|
||||
#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160"
|
||||
#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224"
|
||||
#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256"
|
||||
#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384"
|
||||
#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512"
|
||||
#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128"
|
||||
#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256"
|
||||
#define OSSL_DIGEST_NAME_SM3 "SM3"
|
||||
|
||||
/* Known MAC names */
|
||||
#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC"
|
||||
#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC"
|
||||
#define OSSL_MAC_NAME_CMAC "CMAC"
|
||||
#define OSSL_MAC_NAME_GMAC "GMAC"
|
||||
#define OSSL_MAC_NAME_HMAC "HMAC"
|
||||
#define OSSL_MAC_NAME_KMAC128 "KMAC128"
|
||||
#define OSSL_MAC_NAME_KMAC256 "KMAC256"
|
||||
#define OSSL_MAC_NAME_POLY1305 "POLY1305"
|
||||
#define OSSL_MAC_NAME_SIPHASH "SIPHASH"
|
||||
|
||||
/* Known KDF names */
|
||||
#define OSSL_KDF_NAME_HKDF "HKDF"
|
||||
#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF"
|
||||
#define OSSL_KDF_NAME_PBKDF1 "PBKDF1"
|
||||
#define OSSL_KDF_NAME_PBKDF2 "PBKDF2"
|
||||
#define OSSL_KDF_NAME_SCRYPT "SCRYPT"
|
||||
#define OSSL_KDF_NAME_SSHKDF "SSHKDF"
|
||||
#define OSSL_KDF_NAME_SSKDF "SSKDF"
|
||||
#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF"
|
||||
#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1"
|
||||
#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT"
|
||||
#define OSSL_KDF_NAME_X963KDF "X963KDF"
|
||||
#define OSSL_KDF_NAME_KBKDF "KBKDF"
|
||||
#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF"
|
||||
#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF"
|
||||
|
||||
/* RSA padding modes */
|
||||
#define OSSL_PKEY_RSA_PAD_MODE_NONE "none"
|
||||
#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1"
|
||||
#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep"
|
||||
#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931"
|
||||
#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss"
|
||||
|
||||
/* RSA pss padding salt length */
|
||||
#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest"
|
||||
#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max"
|
||||
#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto"
|
||||
#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax"
|
||||
|
||||
/* OSSL_PKEY_PARAM_EC_ENCODING values */
|
||||
#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit"
|
||||
#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve"
|
||||
|
||||
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed"
|
||||
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed"
|
||||
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid"
|
||||
|
||||
#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default"
|
||||
#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named"
|
||||
#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist"
|
||||
|
||||
/* PROV_SKEY well known key types */
|
||||
#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET"
|
||||
#define OSSL_SKEY_TYPE_AES "AES"
|
||||
|
||||
/* OSSL_KEM_PARAM_OPERATION values */
|
||||
#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE"
|
||||
#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM"
|
||||
|
||||
/* Provider configuration variables */
|
||||
#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed"
|
||||
|
||||
/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */
|
||||
/* clang-format off */
|
||||
# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id"
|
||||
# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params"
|
||||
# define OSSL_ALG_PARAM_CIPHER "cipher"
|
||||
# define OSSL_ALG_PARAM_DIGEST "digest"
|
||||
# define OSSL_ALG_PARAM_ENGINE "engine"
|
||||
# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator"
|
||||
# define OSSL_ALG_PARAM_MAC "mac"
|
||||
# define OSSL_ALG_PARAM_PROPERTIES "properties"
|
||||
# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||
# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE
|
||||
# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED
|
||||
# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection"
|
||||
# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||
# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES
|
||||
# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||
# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props"
|
||||
# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
|
||||
# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
|
||||
# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
|
||||
# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version"
|
||||
# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal"
|
||||
# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name"
|
||||
# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid"
|
||||
# define OSSL_CIPHER_PARAM_AEAD "aead"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN
|
||||
# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TAG "tag"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed"
|
||||
# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv"
|
||||
# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID
|
||||
# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param"
|
||||
# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize"
|
||||
# define OSSL_CIPHER_PARAM_CTS "cts"
|
||||
# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode"
|
||||
# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv"
|
||||
# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only"
|
||||
# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check"
|
||||
# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey"
|
||||
# define OSSL_CIPHER_PARAM_IV "iv"
|
||||
# define OSSL_CIPHER_PARAM_IVLEN "ivlen"
|
||||
# define OSSL_CIPHER_PARAM_KEYLEN "keylen"
|
||||
# define OSSL_CIPHER_PARAM_MODE "mode"
|
||||
# define OSSL_CIPHER_PARAM_NUM "num"
|
||||
# define OSSL_CIPHER_PARAM_PADDING "padding"
|
||||
# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag"
|
||||
# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey"
|
||||
# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits"
|
||||
# define OSSL_CIPHER_PARAM_ROUNDS "rounds"
|
||||
# define OSSL_CIPHER_PARAM_SPEED "speed"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz"
|
||||
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag"
|
||||
# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac"
|
||||
# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size"
|
||||
# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version"
|
||||
# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv"
|
||||
# define OSSL_CIPHER_PARAM_USE_BITS "use-bits"
|
||||
# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard"
|
||||
# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent"
|
||||
# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize"
|
||||
# define OSSL_DIGEST_PARAM_MICALG "micalg"
|
||||
# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type"
|
||||
# define OSSL_DIGEST_PARAM_SIZE "size"
|
||||
# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms"
|
||||
# define OSSL_DIGEST_PARAM_XOF "xof"
|
||||
# define OSSL_DIGEST_PARAM_XOFLEN "xoflen"
|
||||
# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||
# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||
# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required"
|
||||
# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC
|
||||
# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen"
|
||||
# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen"
|
||||
# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length"
|
||||
# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen"
|
||||
# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen"
|
||||
# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen"
|
||||
# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length"
|
||||
# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen"
|
||||
# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance"
|
||||
# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data"
|
||||
# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter"
|
||||
# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests"
|
||||
# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time"
|
||||
# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval"
|
||||
# define OSSL_DRBG_PARAM_SIZE "size"
|
||||
# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function"
|
||||
# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||
# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level"
|
||||
# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters"
|
||||
# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode"
|
||||
# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK
|
||||
# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest"
|
||||
# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props"
|
||||
# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen"
|
||||
# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type"
|
||||
# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm"
|
||||
# define OSSL_EXCHANGE_PARAM_PAD "pad"
|
||||
# define OSSL_GEN_PARAM_ITERATION "iteration"
|
||||
# define OSSL_GEN_PARAM_POTENTIAL "potential"
|
||||
# define OSSL_KDF_PARAM_ARGON2_AD "ad"
|
||||
# define OSSL_KDF_PARAM_ARGON2_LANES "lanes"
|
||||
# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost"
|
||||
# define OSSL_KDF_PARAM_ARGON2_VERSION "version"
|
||||
# define OSSL_KDF_PARAM_CEK_ALG "cekalg"
|
||||
# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||
# define OSSL_KDF_PARAM_CONSTANT "constant"
|
||||
# define OSSL_KDF_PARAM_DATA "data"
|
||||
# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||
# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean"
|
||||
# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check"
|
||||
# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy"
|
||||
# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce"
|
||||
# define OSSL_KDF_PARAM_INFO "info"
|
||||
# define OSSL_KDF_PARAM_ITER "iter"
|
||||
# define OSSL_KDF_PARAM_KBKDF_R "r"
|
||||
# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l"
|
||||
# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator"
|
||||
# define OSSL_KDF_PARAM_KEY "key"
|
||||
# define OSSL_KDF_PARAM_LABEL "label"
|
||||
# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC
|
||||
# define OSSL_KDF_PARAM_MAC_SIZE "maclen"
|
||||
# define OSSL_KDF_PARAM_MODE "mode"
|
||||
# define OSSL_KDF_PARAM_PASSWORD "pass"
|
||||
# define OSSL_KDF_PARAM_PKCS12_ID "id"
|
||||
# define OSSL_KDF_PARAM_PKCS5 "pkcs5"
|
||||
# define OSSL_KDF_PARAM_PREFIX "prefix"
|
||||
# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_KDF_PARAM_SALT "salt"
|
||||
# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes"
|
||||
# define OSSL_KDF_PARAM_SCRYPT_N "n"
|
||||
# define OSSL_KDF_PARAM_SCRYPT_P "p"
|
||||
# define OSSL_KDF_PARAM_SCRYPT_R "r"
|
||||
# define OSSL_KDF_PARAM_SECRET "secret"
|
||||
# define OSSL_KDF_PARAM_SEED "seed"
|
||||
# define OSSL_KDF_PARAM_SIZE "size"
|
||||
# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id"
|
||||
# define OSSL_KDF_PARAM_SSHKDF_TYPE "type"
|
||||
# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash"
|
||||
# define OSSL_KDF_PARAM_THREADS "threads"
|
||||
# define OSSL_KDF_PARAM_UKM "ukm"
|
||||
# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info"
|
||||
# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info"
|
||||
# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info"
|
||||
# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo"
|
||||
# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo"
|
||||
# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits"
|
||||
# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_KEM_PARAM_IKME "ikme"
|
||||
# define OSSL_KEM_PARAM_OPERATION "operation"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm"
|
||||
# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len"
|
||||
# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size"
|
||||
# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||
# define OSSL_MAC_PARAM_CUSTOM "custom"
|
||||
# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds"
|
||||
# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||
# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit"
|
||||
# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot"
|
||||
# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds"
|
||||
# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC
|
||||
# define OSSL_MAC_PARAM_IV "iv"
|
||||
# define OSSL_MAC_PARAM_KEY "key"
|
||||
# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_MAC_PARAM_SALT "salt"
|
||||
# define OSSL_MAC_PARAM_SIZE "size"
|
||||
# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size"
|
||||
# define OSSL_MAC_PARAM_XOF "xof"
|
||||
# define OSSL_OBJECT_PARAM_DATA "data"
|
||||
# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure"
|
||||
# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type"
|
||||
# define OSSL_OBJECT_PARAM_DESC "desc"
|
||||
# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type"
|
||||
# define OSSL_OBJECT_PARAM_REFERENCE "reference"
|
||||
# define OSSL_OBJECT_PARAM_TYPE "type"
|
||||
# define OSSL_PASSPHRASE_PARAM_INFO "info"
|
||||
# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID
|
||||
# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
# define OSSL_PKEY_PARAM_BITS "bits"
|
||||
# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||
# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest"
|
||||
# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm"
|
||||
# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator"
|
||||
# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len"
|
||||
# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||
# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size"
|
||||
# define OSSL_PKEY_PARAM_DIST_ID "distid"
|
||||
# define OSSL_PKEY_PARAM_EC_A "a"
|
||||
# define OSSL_PKEY_PARAM_EC_B "b"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_M "m"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp"
|
||||
# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type"
|
||||
# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor"
|
||||
# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit"
|
||||
# define OSSL_PKEY_PARAM_EC_ENCODING "encoding"
|
||||
# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type"
|
||||
# define OSSL_PKEY_PARAM_EC_GENERATOR "generator"
|
||||
# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check"
|
||||
# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public"
|
||||
# define OSSL_PKEY_PARAM_EC_ORDER "order"
|
||||
# define OSSL_PKEY_PARAM_EC_P "p"
|
||||
# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format"
|
||||
# define OSSL_PKEY_PARAM_EC_PUB_X "qx"
|
||||
# define OSSL_PKEY_PARAM_EC_PUB_Y "qy"
|
||||
# define OSSL_PKEY_PARAM_EC_SEED "seed"
|
||||
# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key"
|
||||
# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE
|
||||
# define OSSL_PKEY_PARAM_FFC_COFACTOR "j"
|
||||
# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||
# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
|
||||
# define OSSL_PKEY_PARAM_FFC_G "g"
|
||||
# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex"
|
||||
# define OSSL_PKEY_PARAM_FFC_H "hindex"
|
||||
# define OSSL_PKEY_PARAM_FFC_P "p"
|
||||
# define OSSL_PKEY_PARAM_FFC_PBITS "pbits"
|
||||
# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter"
|
||||
# define OSSL_PKEY_PARAM_FFC_Q "q"
|
||||
# define OSSL_PKEY_PARAM_FFC_QBITS "qbits"
|
||||
# define OSSL_PKEY_PARAM_FFC_SEED "seed"
|
||||
# define OSSL_PKEY_PARAM_FFC_TYPE "type"
|
||||
# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g"
|
||||
# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy"
|
||||
# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq"
|
||||
# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check"
|
||||
# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check"
|
||||
# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check"
|
||||
# define OSSL_PKEY_PARAM_GROUP_NAME "group"
|
||||
# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
|
||||
# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest"
|
||||
# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf"
|
||||
# define OSSL_PKEY_PARAM_MAX_SIZE "max-size"
|
||||
# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest"
|
||||
# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties"
|
||||
# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats"
|
||||
# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats"
|
||||
# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed"
|
||||
# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed"
|
||||
# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed"
|
||||
# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed"
|
||||
# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode"
|
||||
# define OSSL_PKEY_PARAM_PRIV_KEY "priv"
|
||||
# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||
# define OSSL_PKEY_PARAM_PUB_KEY "pub"
|
||||
# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8"
|
||||
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9"
|
||||
# define OSSL_PKEY_PARAM_RSA_D "d"
|
||||
# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq"
|
||||
# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||
# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
|
||||
# define OSSL_PKEY_PARAM_RSA_E "e"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8"
|
||||
# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8"
|
||||
# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9"
|
||||
# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC
|
||||
# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||
# define OSSL_PKEY_PARAM_RSA_N "n"
|
||||
# define OSSL_PKEY_PARAM_RSA_PRIMES "primes"
|
||||
# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1"
|
||||
# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2"
|
||||
# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits"
|
||||
# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed"
|
||||
# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG
|
||||
# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag"
|
||||
# define OSSL_PROV_PARAM_BUILDINFO "buildinfo"
|
||||
# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename"
|
||||
# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name"
|
||||
# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version"
|
||||
# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md"
|
||||
# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled"
|
||||
# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check"
|
||||
# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check"
|
||||
# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check"
|
||||
# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check"
|
||||
# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check"
|
||||
# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check"
|
||||
# define OSSL_PROV_PARAM_NAME "name"
|
||||
# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac"
|
||||
# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check"
|
||||
# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled"
|
||||
# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check"
|
||||
# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled"
|
||||
# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks"
|
||||
# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc"
|
||||
# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase"
|
||||
# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type"
|
||||
# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check"
|
||||
# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check"
|
||||
# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check"
|
||||
# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check"
|
||||
# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check"
|
||||
# define OSSL_PROV_PARAM_STATUS "status"
|
||||
# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled"
|
||||
# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check"
|
||||
# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check"
|
||||
# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check"
|
||||
# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check"
|
||||
# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check"
|
||||
# define OSSL_PROV_PARAM_VERSION "version"
|
||||
# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check"
|
||||
# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check"
|
||||
# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check"
|
||||
# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_RAND_PARAM_GENERATE "generate"
|
||||
# define OSSL_RAND_PARAM_MAX_REQUEST "max_request"
|
||||
# define OSSL_RAND_PARAM_STATE "state"
|
||||
# define OSSL_RAND_PARAM_STRENGTH "strength"
|
||||
# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy"
|
||||
# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce"
|
||||
# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random"
|
||||
# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID
|
||||
# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS
|
||||
# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string"
|
||||
# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic"
|
||||
# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||
# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check"
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check"
|
||||
# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message"
|
||||
# define OSSL_SIGNATURE_PARAM_INSTANCE "instance"
|
||||
# define OSSL_SIGNATURE_PARAM_KAT "kat"
|
||||
# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding"
|
||||
# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||
# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES
|
||||
# define OSSL_SIGNATURE_PARAM_MU "mu"
|
||||
# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type"
|
||||
# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
|
||||
# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
|
||||
# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen"
|
||||
# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature"
|
||||
# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy"
|
||||
# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length"
|
||||
# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes"
|
||||
# define OSSL_STORE_PARAM_ALIAS "alias"
|
||||
# define OSSL_STORE_PARAM_DIGEST "digest"
|
||||
# define OSSL_STORE_PARAM_EXPECT "expect"
|
||||
# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint"
|
||||
# define OSSL_STORE_PARAM_INPUT_TYPE "input-type"
|
||||
# define OSSL_STORE_PARAM_ISSUER "name"
|
||||
# define OSSL_STORE_PARAM_PROPERTIES "properties"
|
||||
# define OSSL_STORE_PARAM_SERIAL "serial"
|
||||
# define OSSL_STORE_PARAM_SUBJECT "subject"
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,279 @@
|
||||
/*-
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/crmf.h.in
|
||||
*
|
||||
* Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*
|
||||
* CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb.
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CRMF_H
|
||||
#define OPENSSL_CRMF_H
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_CRMF
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/crmferr.h>
|
||||
#include <openssl/x509v3.h> /* for GENERAL_NAME etc. */
|
||||
#include <openssl/cms.h>
|
||||
|
||||
/* explicit #includes not strictly needed since implied by the above: */
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0
|
||||
#define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1
|
||||
#define OSSL_CRMF_POPOPRIVKEY_DHMAC 2
|
||||
#define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3
|
||||
#define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4
|
||||
|
||||
#define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0
|
||||
#define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1
|
||||
typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE)
|
||||
|
||||
typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY)
|
||||
|
||||
typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG)
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG)
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG)
|
||||
#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n))
|
||||
#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)))
|
||||
#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
|
||||
#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
|
||||
#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx))
|
||||
#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr)))
|
||||
#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
|
||||
#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
|
||||
#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum)
|
||||
#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE;
|
||||
void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v);
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE)
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE)
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum)
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER)
|
||||
typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY;
|
||||
typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST;
|
||||
typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID)
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID)
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID)
|
||||
#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp)))
|
||||
#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n))
|
||||
#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i)))
|
||||
#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)))
|
||||
#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
|
||||
#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
|
||||
#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))
|
||||
#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx))
|
||||
#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr)))
|
||||
#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
|
||||
#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
|
||||
#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum)
|
||||
#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))
|
||||
#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)))
|
||||
#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO)
|
||||
typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO)
|
||||
typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE)
|
||||
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE)
|
||||
typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS)
|
||||
|
||||
typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY;
|
||||
|
||||
/* crmf_pbm.c */
|
||||
OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen,
|
||||
int owfnid, size_t itercnt,
|
||||
int macnid);
|
||||
int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
const OSSL_CRMF_PBMPARAMETER *pbmp,
|
||||
const unsigned char *msg, size_t msglen,
|
||||
const unsigned char *sec, size_t seclen,
|
||||
unsigned char **mac, size_t *maclen);
|
||||
|
||||
/* crmf_lib.c */
|
||||
int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg,
|
||||
const ASN1_UTF8STRING *tok);
|
||||
ASN1_UTF8STRING
|
||||
*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg);
|
||||
int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg,
|
||||
const ASN1_UTF8STRING *auth);
|
||||
ASN1_UTF8STRING
|
||||
*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg);
|
||||
int OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
|
||||
OSSL_CRMF_SINGLEPUBINFO *spi);
|
||||
#define OSSL_CRMF_PUB_METHOD_DONTCARE 0
|
||||
#define OSSL_CRMF_PUB_METHOD_X500 1
|
||||
#define OSSL_CRMF_PUB_METHOD_WEB 2
|
||||
#define OSSL_CRMF_PUB_METHOD_LDAP 3
|
||||
int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi,
|
||||
int method, GENERAL_NAME *nm);
|
||||
#define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0
|
||||
#define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1
|
||||
int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
|
||||
int action);
|
||||
int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg,
|
||||
const OSSL_CRMF_PKIPUBLICATIONINFO *pi);
|
||||
OSSL_CRMF_PKIPUBLICATIONINFO
|
||||
*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg);
|
||||
int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg,
|
||||
const X509_PUBKEY *pubkey);
|
||||
X509_PUBKEY
|
||||
*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg);
|
||||
int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg,
|
||||
const OSSL_CRMF_CERTID *cid);
|
||||
OSSL_CRMF_CERTID
|
||||
*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg);
|
||||
OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer,
|
||||
const ASN1_INTEGER *serial);
|
||||
|
||||
int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg,
|
||||
const ASN1_UTF8STRING *utf8pairs);
|
||||
ASN1_UTF8STRING
|
||||
*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg);
|
||||
int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg,
|
||||
const OSSL_CRMF_CERTREQUEST *cr);
|
||||
OSSL_CRMF_CERTREQUEST
|
||||
*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg);
|
||||
|
||||
int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm,
|
||||
ASN1_TIME *notBefore, ASN1_TIME *notAfter);
|
||||
int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid);
|
||||
int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm);
|
||||
int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts);
|
||||
|
||||
int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext);
|
||||
#define OSSL_CRMF_POPO_NONE -1
|
||||
#define OSSL_CRMF_POPO_RAVERIFIED 0
|
||||
#define OSSL_CRMF_POPO_SIGNATURE 1
|
||||
#define OSSL_CRMF_POPO_KEYENC 2
|
||||
#define OSSL_CRMF_POPO_KEYAGREE 3
|
||||
int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm,
|
||||
EVP_PKEY *pkey, const EVP_MD *digest,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs,
|
||||
int rid, int acceptRAVerified,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm);
|
||||
X509_PUBKEY
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
X509_EXTENSIONS
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
const X509_NAME *OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid);
|
||||
const ASN1_INTEGER *OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid);
|
||||
int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl,
|
||||
EVP_PKEY *pubkey,
|
||||
const X509_NAME *subject,
|
||||
const X509_NAME *issuer,
|
||||
const ASN1_INTEGER *serial);
|
||||
X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||
OSSL_LIB_CTX *libctx, const char *propq,
|
||||
EVP_PKEY *pkey);
|
||||
X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert,
|
||||
OSSL_LIB_CTX *libctx, const char *propq,
|
||||
EVP_PKEY *pkey, unsigned int flags);
|
||||
unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc,
|
||||
OSSL_LIB_CTX *libctx, const char *propq,
|
||||
EVP_PKEY *pkey, int *outlen);
|
||||
EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey,
|
||||
X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey,
|
||||
X509 *cert, ASN1_OCTET_STRING *secret,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr);
|
||||
#ifndef OPENSSL_NO_CMS
|
||||
OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !defined(OPENSSL_NO_CRMF) */
|
||||
#endif /* !defined(OPENSSL_CRMF_H) */
|
||||
@@ -0,0 +1,588 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/crypto.h.in
|
||||
*
|
||||
* Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CRYPTO_H
|
||||
#define OPENSSL_CRYPTO_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_CRYPTO_H
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <openssl/e_os2.h>
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/opensslconf.h>
|
||||
#include <openssl/cryptoerr.h>
|
||||
#include <openssl/core.h>
|
||||
|
||||
#ifdef CHARSET_EBCDIC
|
||||
#include <openssl/ebcdic.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Resolve problems on some operating systems with symbol names that clash
|
||||
* one way or another
|
||||
*/
|
||||
#include <openssl/symhacks.h>
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#include <openssl/opensslv.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define SSLeay OpenSSL_version_num
|
||||
#define SSLeay_version OpenSSL_version
|
||||
#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
|
||||
#define SSLEAY_VERSION OPENSSL_VERSION
|
||||
#define SSLEAY_CFLAGS OPENSSL_CFLAGS
|
||||
#define SSLEAY_BUILT_ON OPENSSL_BUILT_ON
|
||||
#define SSLEAY_PLATFORM OPENSSL_PLATFORM
|
||||
#define SSLEAY_DIR OPENSSL_DIR
|
||||
|
||||
/*
|
||||
* Old type for allocating dynamic locks. No longer used. Use the new thread
|
||||
* API instead.
|
||||
*/
|
||||
typedef struct {
|
||||
int dummy;
|
||||
} CRYPTO_dynlock;
|
||||
|
||||
#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
|
||||
|
||||
typedef void CRYPTO_RWLOCK;
|
||||
|
||||
CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void);
|
||||
__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock);
|
||||
__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock);
|
||||
void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock);
|
||||
|
||||
int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret,
|
||||
CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret,
|
||||
CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret,
|
||||
CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock);
|
||||
int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock);
|
||||
|
||||
/* No longer needed, so this is a no-op */
|
||||
#define OPENSSL_malloc_init() \
|
||||
while (0) \
|
||||
continue
|
||||
|
||||
#define OPENSSL_malloc(num) \
|
||||
CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_zalloc(num) \
|
||||
CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_aligned_alloc(num, alignment, freeptr) \
|
||||
CRYPTO_aligned_alloc(num, alignment, freeptr, \
|
||||
OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_realloc(addr, num) \
|
||||
CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_clear_realloc(addr, old_num, num) \
|
||||
CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_clear_free(addr, num) \
|
||||
CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_free(addr) \
|
||||
CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_memdup(str, s) \
|
||||
CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_strdup(str) \
|
||||
CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_strndup(str, n) \
|
||||
CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_secure_malloc(num) \
|
||||
CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_secure_zalloc(num) \
|
||||
CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_secure_free(addr) \
|
||||
CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_secure_clear_free(addr, num) \
|
||||
CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_secure_actual_size(ptr) \
|
||||
CRYPTO_secure_actual_size(ptr)
|
||||
|
||||
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz);
|
||||
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz);
|
||||
size_t OPENSSL_strnlen(const char *str, size_t maxlen);
|
||||
int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num);
|
||||
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength,
|
||||
const unsigned char *buf, size_t buflen,
|
||||
const char sep);
|
||||
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
|
||||
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen,
|
||||
const char *str, const char sep);
|
||||
unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen);
|
||||
int OPENSSL_hexchar2int(unsigned char c);
|
||||
int OPENSSL_strcasecmp(const char *s1, const char *s2);
|
||||
int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n);
|
||||
|
||||
#define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U << (sizeof(int) * 8 - 1)) - 1) / sizeof(type))
|
||||
|
||||
/*
|
||||
* These functions return the values of OPENSSL_VERSION_MAJOR,
|
||||
* OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE
|
||||
* and OPENSSL_VERSION_BUILD_METADATA, respectively.
|
||||
*/
|
||||
unsigned int OPENSSL_version_major(void);
|
||||
unsigned int OPENSSL_version_minor(void);
|
||||
unsigned int OPENSSL_version_patch(void);
|
||||
const char *OPENSSL_version_pre_release(void);
|
||||
const char *OPENSSL_version_build_metadata(void);
|
||||
|
||||
unsigned long OpenSSL_version_num(void);
|
||||
const char *OpenSSL_version(int type);
|
||||
#define OPENSSL_VERSION 0
|
||||
#define OPENSSL_CFLAGS 1
|
||||
#define OPENSSL_BUILT_ON 2
|
||||
#define OPENSSL_PLATFORM 3
|
||||
#define OPENSSL_DIR 4
|
||||
#define OPENSSL_ENGINES_DIR 5
|
||||
#define OPENSSL_VERSION_STRING 6
|
||||
#define OPENSSL_FULL_VERSION_STRING 7
|
||||
#define OPENSSL_MODULES_DIR 8
|
||||
#define OPENSSL_CPU_INFO 9
|
||||
#define OPENSSL_WINCTX 10
|
||||
|
||||
const char *OPENSSL_info(int type);
|
||||
/*
|
||||
* The series starts at 1001 to avoid confusion with the OpenSSL_version
|
||||
* types.
|
||||
*/
|
||||
#define OPENSSL_INFO_CONFIG_DIR 1001
|
||||
#define OPENSSL_INFO_ENGINES_DIR 1002
|
||||
#define OPENSSL_INFO_MODULES_DIR 1003
|
||||
#define OPENSSL_INFO_DSO_EXTENSION 1004
|
||||
#define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005
|
||||
#define OPENSSL_INFO_LIST_SEPARATOR 1006
|
||||
#define OPENSSL_INFO_SEED_SOURCE 1007
|
||||
#define OPENSSL_INFO_CPU_SETTINGS 1008
|
||||
#define OPENSSL_INFO_WINDOWS_CONTEXT 1009
|
||||
|
||||
int OPENSSL_issetugid(void);
|
||||
|
||||
struct crypto_ex_data_st {
|
||||
OSSL_LIB_CTX *ctx;
|
||||
STACK_OF(void) *sk;
|
||||
};
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(void, void, void)
|
||||
#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk))
|
||||
#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx)))
|
||||
#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp)))
|
||||
#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null())
|
||||
#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n)))
|
||||
#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n))
|
||||
#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk))
|
||||
#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk))
|
||||
#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i)))
|
||||
#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)))
|
||||
#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
|
||||
#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
|
||||
#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk)))
|
||||
#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk)))
|
||||
#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc))
|
||||
#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx))
|
||||
#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr)))
|
||||
#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
|
||||
#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
|
||||
#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum)
|
||||
#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk))
|
||||
#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk))
|
||||
#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk)))
|
||||
#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc)))
|
||||
#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* Per class, we have a STACK of function pointers.
|
||||
*/
|
||||
#define CRYPTO_EX_INDEX_SSL 0
|
||||
#define CRYPTO_EX_INDEX_SSL_CTX 1
|
||||
#define CRYPTO_EX_INDEX_SSL_SESSION 2
|
||||
#define CRYPTO_EX_INDEX_X509 3
|
||||
#define CRYPTO_EX_INDEX_X509_STORE 4
|
||||
#define CRYPTO_EX_INDEX_X509_STORE_CTX 5
|
||||
#define CRYPTO_EX_INDEX_DH 6
|
||||
#define CRYPTO_EX_INDEX_DSA 7
|
||||
#define CRYPTO_EX_INDEX_EC_KEY 8
|
||||
#define CRYPTO_EX_INDEX_RSA 9
|
||||
#define CRYPTO_EX_INDEX_ENGINE 10
|
||||
#define CRYPTO_EX_INDEX_UI 11
|
||||
#define CRYPTO_EX_INDEX_BIO 12
|
||||
#define CRYPTO_EX_INDEX_APP 13
|
||||
#define CRYPTO_EX_INDEX_UI_METHOD 14
|
||||
#define CRYPTO_EX_INDEX_RAND_DRBG 15
|
||||
#define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG
|
||||
#define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16
|
||||
#define CRYPTO_EX_INDEX_EVP_PKEY 17
|
||||
#define CRYPTO_EX_INDEX__COUNT 18
|
||||
|
||||
typedef void CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
||||
int idx, long argl, void *argp);
|
||||
typedef void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
||||
int idx, long argl, void *argp);
|
||||
typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from,
|
||||
void **from_d, int idx, long argl, void *argp);
|
||||
__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
|
||||
CRYPTO_EX_new *new_func,
|
||||
CRYPTO_EX_dup *dup_func,
|
||||
CRYPTO_EX_free *free_func);
|
||||
/* No longer use an index. */
|
||||
int CRYPTO_free_ex_index(int class_index, int idx);
|
||||
|
||||
/*
|
||||
* Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
|
||||
* given class (invokes whatever per-class callbacks are applicable)
|
||||
*/
|
||||
int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
|
||||
int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
|
||||
const CRYPTO_EX_DATA *from);
|
||||
|
||||
void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
|
||||
|
||||
/* Allocate a single item in the CRYPTO_EX_DATA variable */
|
||||
int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad,
|
||||
int idx);
|
||||
|
||||
/*
|
||||
* Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
|
||||
* index (relative to the class type involved)
|
||||
*/
|
||||
int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
|
||||
void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
/*
|
||||
* This function cleans up all "ex_data" state. It mustn't be called under
|
||||
* potential race-conditions.
|
||||
*/
|
||||
#define CRYPTO_cleanup_all_ex_data() \
|
||||
while (0) \
|
||||
continue
|
||||
|
||||
/*
|
||||
* The old locking functions have been removed completely without compatibility
|
||||
* macros. This is because the old functions either could not properly report
|
||||
* errors, or the returned error values were not clearly documented.
|
||||
* Replacing the locking functions with no-ops would cause race condition
|
||||
* issues in the affected applications. It is far better for them to fail at
|
||||
* compile time.
|
||||
* On the other hand, the locking callbacks are no longer used. Consequently,
|
||||
* the callback management functions can be safely replaced with no-op macros.
|
||||
*/
|
||||
#define CRYPTO_num_locks() (1)
|
||||
#define CRYPTO_set_locking_callback(func)
|
||||
#define CRYPTO_get_locking_callback() (NULL)
|
||||
#define CRYPTO_set_add_lock_callback(func)
|
||||
#define CRYPTO_get_add_lock_callback() (NULL)
|
||||
|
||||
/*
|
||||
* These defines where used in combination with the old locking callbacks,
|
||||
* they are not called anymore, but old code that's not called might still
|
||||
* use them.
|
||||
*/
|
||||
#define CRYPTO_LOCK 1
|
||||
#define CRYPTO_UNLOCK 2
|
||||
#define CRYPTO_READ 4
|
||||
#define CRYPTO_WRITE 8
|
||||
|
||||
/* This structure is no longer used */
|
||||
typedef struct crypto_threadid_st {
|
||||
int dummy;
|
||||
} CRYPTO_THREADID;
|
||||
/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
|
||||
#define CRYPTO_THREADID_set_numeric(id, val)
|
||||
#define CRYPTO_THREADID_set_pointer(id, ptr)
|
||||
#define CRYPTO_THREADID_set_callback(threadid_func) (0)
|
||||
#define CRYPTO_THREADID_get_callback() (NULL)
|
||||
#define CRYPTO_THREADID_current(id)
|
||||
#define CRYPTO_THREADID_cmp(a, b) (-1)
|
||||
#define CRYPTO_THREADID_cpy(dest, src)
|
||||
#define CRYPTO_THREADID_hash(id) (0UL)
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_0_0
|
||||
#define CRYPTO_set_id_callback(func)
|
||||
#define CRYPTO_get_id_callback() (NULL)
|
||||
#define CRYPTO_thread_id() (0UL)
|
||||
#endif /* OPENSSL_NO_DEPRECATED_1_0_0 */
|
||||
|
||||
#define CRYPTO_set_dynlock_create_callback(dyn_create_function)
|
||||
#define CRYPTO_set_dynlock_lock_callback(dyn_lock_function)
|
||||
#define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function)
|
||||
#define CRYPTO_get_dynlock_create_callback() (NULL)
|
||||
#define CRYPTO_get_dynlock_lock_callback() (NULL)
|
||||
#define CRYPTO_get_dynlock_destroy_callback() (NULL)
|
||||
#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
|
||||
|
||||
typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line);
|
||||
typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file,
|
||||
int line);
|
||||
typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line);
|
||||
int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn,
|
||||
CRYPTO_realloc_fn realloc_fn,
|
||||
CRYPTO_free_fn free_fn);
|
||||
void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn,
|
||||
CRYPTO_realloc_fn *realloc_fn,
|
||||
CRYPTO_free_fn *free_fn);
|
||||
|
||||
OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line);
|
||||
OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line);
|
||||
OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align,
|
||||
void **freeptr, const char *file,
|
||||
int line);
|
||||
void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line);
|
||||
char *CRYPTO_strdup(const char *str, const char *file, int line);
|
||||
char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line);
|
||||
void CRYPTO_free(void *ptr, const char *file, int line);
|
||||
void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line);
|
||||
void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line);
|
||||
void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num,
|
||||
const char *file, int line);
|
||||
|
||||
int CRYPTO_secure_malloc_init(size_t sz, size_t minsize);
|
||||
int CRYPTO_secure_malloc_done(void);
|
||||
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line);
|
||||
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line);
|
||||
void CRYPTO_secure_free(void *ptr, const char *file, int line);
|
||||
void CRYPTO_secure_clear_free(void *ptr, size_t num,
|
||||
const char *file, int line);
|
||||
int CRYPTO_secure_allocated(const void *ptr);
|
||||
int CRYPTO_secure_malloc_initialized(void);
|
||||
size_t CRYPTO_secure_actual_size(void *ptr);
|
||||
size_t CRYPTO_secure_used(void);
|
||||
|
||||
void OPENSSL_cleanse(void *ptr, size_t len);
|
||||
|
||||
#ifndef OPENSSL_NO_CRYPTO_MDEBUG
|
||||
/*
|
||||
* The following can be used to detect memory leaks in the library. If
|
||||
* used, it turns on malloc checking
|
||||
*/
|
||||
#define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */
|
||||
#define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */
|
||||
#define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */
|
||||
#define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */
|
||||
|
||||
/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */
|
||||
#define CRYPTO_MEM_CHECK_MAX_FS 256
|
||||
|
||||
void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define OPENSSL_mem_debug_push(info) \
|
||||
CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE)
|
||||
#define OPENSSL_mem_debug_pop() \
|
||||
CRYPTO_mem_debug_pop()
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag);
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode);
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info,
|
||||
const char *file, int line);
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void);
|
||||
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num,
|
||||
int flag,
|
||||
const char *file, int line);
|
||||
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2,
|
||||
size_t num, int flag,
|
||||
const char *file, int line);
|
||||
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag,
|
||||
const char *file, int line);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u),
|
||||
void *u);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *);
|
||||
#endif
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio);
|
||||
#endif
|
||||
#endif /* OPENSSL_NO_CRYPTO_MDEBUG */
|
||||
|
||||
/* die if we have to */
|
||||
ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define OpenSSLDie(f, l, a) OPENSSL_die((a), (f), (l))
|
||||
#endif
|
||||
#define OPENSSL_assert(e) \
|
||||
(void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
|
||||
|
||||
int OPENSSL_isservice(void);
|
||||
|
||||
void OPENSSL_init(void);
|
||||
#ifdef OPENSSL_SYS_UNIX
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void);
|
||||
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void);
|
||||
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
|
||||
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
|
||||
int OPENSSL_gmtime_diff(int *pday, int *psec,
|
||||
const struct tm *from, const struct tm *to);
|
||||
|
||||
/*
|
||||
* CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
|
||||
* It takes an amount of time dependent on |len|, but independent of the
|
||||
* contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
|
||||
* into a defined order as the return value when a != b is undefined, other
|
||||
* than to be non-zero.
|
||||
*/
|
||||
int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len);
|
||||
|
||||
/* Standard initialisation options */
|
||||
#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
|
||||
#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
|
||||
#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
|
||||
#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
|
||||
#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L
|
||||
#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L
|
||||
#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
|
||||
#define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L
|
||||
#define OPENSSL_INIT_ASYNC 0x00000100L
|
||||
#define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L
|
||||
#define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L
|
||||
#define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L
|
||||
#define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L
|
||||
#define OPENSSL_INIT_ENGINE_CAPI 0x00002000L
|
||||
#define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L
|
||||
#define OPENSSL_INIT_ENGINE_AFALG 0x00008000L
|
||||
/* FREE: 0x00010000L */
|
||||
#define OPENSSL_INIT_ATFORK 0x00020000L
|
||||
/* OPENSSL_INIT_BASE_ONLY 0x00040000L */
|
||||
#define OPENSSL_INIT_NO_ATEXIT 0x00080000L
|
||||
/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */
|
||||
/* FREE: 0x04000000L */
|
||||
/* FREE: 0x08000000L */
|
||||
/* FREE: 0x10000000L */
|
||||
/* FREE: 0x20000000L */
|
||||
/* FREE: 0x40000000L */
|
||||
/* FREE: 0x80000000L */
|
||||
/* Max OPENSSL_INIT flag value is 0x80000000 */
|
||||
|
||||
/* openssl and dasync not counted as builtin */
|
||||
#define OPENSSL_INIT_ENGINE_ALL_BUILTIN \
|
||||
(OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \
|
||||
| OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | OPENSSL_INIT_ENGINE_PADLOCK)
|
||||
|
||||
/* Library initialisation functions */
|
||||
void OPENSSL_cleanup(void);
|
||||
int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
|
||||
int OPENSSL_atexit(void (*handler)(void));
|
||||
void OPENSSL_thread_stop(void);
|
||||
void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx);
|
||||
|
||||
/* Low-level control of initialization */
|
||||
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
|
||||
const char *config_filename);
|
||||
void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings,
|
||||
unsigned long flags);
|
||||
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
|
||||
const char *config_appname);
|
||||
#endif
|
||||
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
|
||||
|
||||
#if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG)
|
||||
#if defined(_WIN32)
|
||||
#if defined(BASETYPES) || defined(_WINDEF_H)
|
||||
/* application has to include <windows.h> in order to use this */
|
||||
typedef DWORD CRYPTO_THREAD_LOCAL;
|
||||
typedef DWORD CRYPTO_THREAD_ID;
|
||||
|
||||
typedef LONG CRYPTO_ONCE;
|
||||
#define CRYPTO_ONCE_STATIC_INIT 0
|
||||
#endif
|
||||
#else
|
||||
#if defined(__TANDEM) && defined(_SPT_MODEL_)
|
||||
#define SPT_THREAD_SIGNAL 1
|
||||
#define SPT_THREAD_AWARE 1
|
||||
#include <spthread.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
typedef pthread_once_t CRYPTO_ONCE;
|
||||
typedef pthread_key_t CRYPTO_THREAD_LOCAL;
|
||||
typedef pthread_t CRYPTO_THREAD_ID;
|
||||
|
||||
#define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(CRYPTO_ONCE_STATIC_INIT)
|
||||
typedef unsigned int CRYPTO_ONCE;
|
||||
typedef unsigned int CRYPTO_THREAD_LOCAL;
|
||||
typedef unsigned int CRYPTO_THREAD_ID;
|
||||
#define CRYPTO_ONCE_STATIC_INIT 0
|
||||
#endif
|
||||
|
||||
int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void));
|
||||
|
||||
int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *));
|
||||
void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key);
|
||||
int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val);
|
||||
int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key);
|
||||
|
||||
CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void);
|
||||
int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b);
|
||||
|
||||
OSSL_LIB_CTX *OSSL_LIB_CTX_new(void);
|
||||
OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle,
|
||||
const OSSL_DISPATCH *in);
|
||||
OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle,
|
||||
const OSSL_DISPATCH *in);
|
||||
int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file);
|
||||
void OSSL_LIB_CTX_free(OSSL_LIB_CTX *);
|
||||
OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void);
|
||||
OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx);
|
||||
int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx);
|
||||
void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value);
|
||||
|
||||
void OSSL_sleep(uint64_t millis);
|
||||
|
||||
void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,574 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/ct.h.in
|
||||
*
|
||||
* Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_CT_H
|
||||
#define OPENSSL_CT_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_CT_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_CT
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/cterr.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Minimum RSA key size, from RFC6962 */
|
||||
#define SCT_MIN_RSA_BITS 2048
|
||||
|
||||
/* All hashes are SHA256 in v1 of Certificate Transparency */
|
||||
#define CT_V1_HASHLEN SHA256_DIGEST_LENGTH
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT)
|
||||
#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk))
|
||||
#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx)))
|
||||
#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp)))
|
||||
#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null())
|
||||
#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n)))
|
||||
#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n))
|
||||
#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk))
|
||||
#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk))
|
||||
#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i)))
|
||||
#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)))
|
||||
#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))
|
||||
#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))
|
||||
#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk)))
|
||||
#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk)))
|
||||
#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc))
|
||||
#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx))
|
||||
#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr)))
|
||||
#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))
|
||||
#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))
|
||||
#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum)
|
||||
#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk))
|
||||
#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk))
|
||||
#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk)))
|
||||
#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc)))
|
||||
#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG)
|
||||
#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk))
|
||||
#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx)))
|
||||
#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp)))
|
||||
#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null())
|
||||
#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n)))
|
||||
#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n))
|
||||
#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk))
|
||||
#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk))
|
||||
#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i)))
|
||||
#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)))
|
||||
#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))
|
||||
#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))
|
||||
#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk)))
|
||||
#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk)))
|
||||
#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc))
|
||||
#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx))
|
||||
#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr)))
|
||||
#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))
|
||||
#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))
|
||||
#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum)
|
||||
#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk))
|
||||
#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk))
|
||||
#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk)))
|
||||
#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc)))
|
||||
#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef enum {
|
||||
CT_LOG_ENTRY_TYPE_NOT_SET = -1,
|
||||
CT_LOG_ENTRY_TYPE_X509 = 0,
|
||||
CT_LOG_ENTRY_TYPE_PRECERT = 1
|
||||
} ct_log_entry_type_t;
|
||||
|
||||
typedef enum {
|
||||
SCT_VERSION_NOT_SET = -1,
|
||||
SCT_VERSION_V1 = 0
|
||||
} sct_version_t;
|
||||
|
||||
typedef enum {
|
||||
SCT_SOURCE_UNKNOWN,
|
||||
SCT_SOURCE_TLS_EXTENSION,
|
||||
SCT_SOURCE_X509V3_EXTENSION,
|
||||
SCT_SOURCE_OCSP_STAPLED_RESPONSE
|
||||
} sct_source_t;
|
||||
|
||||
typedef enum {
|
||||
SCT_VALIDATION_STATUS_NOT_SET,
|
||||
SCT_VALIDATION_STATUS_UNKNOWN_LOG,
|
||||
SCT_VALIDATION_STATUS_VALID,
|
||||
SCT_VALIDATION_STATUS_INVALID,
|
||||
SCT_VALIDATION_STATUS_UNVERIFIED,
|
||||
SCT_VALIDATION_STATUS_UNKNOWN_VERSION
|
||||
} sct_validation_status_t;
|
||||
|
||||
/******************************************
|
||||
* CT policy evaluation context functions *
|
||||
******************************************/
|
||||
|
||||
/*
|
||||
* Creates a new, empty policy evaluation context associated with the given
|
||||
* library context and property query string.
|
||||
* The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished
|
||||
* with the CT_POLICY_EVAL_CTX.
|
||||
*/
|
||||
CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
/*
|
||||
* The same as CT_POLICY_EVAL_CTX_new_ex() but the default library
|
||||
* context and property query string is used.
|
||||
*/
|
||||
CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void);
|
||||
|
||||
/* Deletes a policy evaluation context and anything it owns. */
|
||||
void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/* Gets the peer certificate that the SCTs are for */
|
||||
X509 *CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/*
|
||||
* Sets the certificate associated with the received SCTs.
|
||||
* Increments the reference count of cert.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert);
|
||||
|
||||
/* Gets the issuer of the aforementioned certificate */
|
||||
X509 *CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/*
|
||||
* Sets the issuer of the certificate associated with the received SCTs.
|
||||
* Increments the reference count of issuer.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer);
|
||||
|
||||
/* Gets the CT logs that are trusted sources of SCTs */
|
||||
const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */
|
||||
void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx,
|
||||
CTLOG_STORE *log_store);
|
||||
|
||||
/*
|
||||
* Gets the time, in milliseconds since the Unix epoch, that will be used as the
|
||||
* current time when checking whether an SCT was issued in the future.
|
||||
* Such SCTs will fail validation, as required by RFC6962.
|
||||
*/
|
||||
uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/*
|
||||
* Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch.
|
||||
* If an SCT's timestamp is after this time, it will be interpreted as having
|
||||
* been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs
|
||||
* whose timestamp is in the future", so an SCT will not validate in this case.
|
||||
*/
|
||||
void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms);
|
||||
|
||||
/*****************
|
||||
* SCT functions *
|
||||
*****************/
|
||||
|
||||
/*
|
||||
* Creates a new, blank SCT.
|
||||
* The caller is responsible for calling SCT_free when finished with the SCT.
|
||||
*/
|
||||
SCT *SCT_new(void);
|
||||
|
||||
/*
|
||||
* Creates a new SCT from some base64-encoded strings.
|
||||
* The caller is responsible for calling SCT_free when finished with the SCT.
|
||||
*/
|
||||
SCT *SCT_new_from_base64(unsigned char version,
|
||||
const char *logid_base64,
|
||||
ct_log_entry_type_t entry_type,
|
||||
uint64_t timestamp,
|
||||
const char *extensions_base64,
|
||||
const char *signature_base64);
|
||||
|
||||
/*
|
||||
* Frees the SCT and the underlying data structures.
|
||||
*/
|
||||
void SCT_free(SCT *sct);
|
||||
|
||||
/*
|
||||
* Free a stack of SCTs, and the underlying SCTs themselves.
|
||||
* Intended to be compatible with X509V3_EXT_FREE.
|
||||
*/
|
||||
void SCT_LIST_free(STACK_OF(SCT) *a);
|
||||
|
||||
/*
|
||||
* Returns the version of the SCT.
|
||||
*/
|
||||
sct_version_t SCT_get_version(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Set the version of an SCT.
|
||||
* Returns 1 on success, 0 if the version is unrecognized.
|
||||
*/
|
||||
__owur int SCT_set_version(SCT *sct, sct_version_t version);
|
||||
|
||||
/*
|
||||
* Returns the log entry type of the SCT.
|
||||
*/
|
||||
ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Set the log entry type of an SCT.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type);
|
||||
|
||||
/*
|
||||
* Gets the ID of the log that an SCT came from.
|
||||
* Ownership of the log ID remains with the SCT.
|
||||
* Returns the length of the log ID.
|
||||
*/
|
||||
size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id);
|
||||
|
||||
/*
|
||||
* Set the log ID of an SCT to point directly to the *log_id specified.
|
||||
* The SCT takes ownership of the specified pointer.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len);
|
||||
|
||||
/*
|
||||
* Set the log ID of an SCT.
|
||||
* This makes a copy of the log_id.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id,
|
||||
size_t log_id_len);
|
||||
|
||||
/*
|
||||
* Returns the timestamp for the SCT (epoch time in milliseconds).
|
||||
*/
|
||||
uint64_t SCT_get_timestamp(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Set the timestamp of an SCT (epoch time in milliseconds).
|
||||
*/
|
||||
void SCT_set_timestamp(SCT *sct, uint64_t timestamp);
|
||||
|
||||
/*
|
||||
* Return the NID for the signature used by the SCT.
|
||||
* For CT v1, this will be either NID_sha256WithRSAEncryption or
|
||||
* NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset).
|
||||
*/
|
||||
int SCT_get_signature_nid(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Set the signature type of an SCT
|
||||
* For CT v1, this should be either NID_sha256WithRSAEncryption or
|
||||
* NID_ecdsa_with_SHA256.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set_signature_nid(SCT *sct, int nid);
|
||||
|
||||
/*
|
||||
* Set *ext to point to the extension data for the SCT. ext must not be NULL.
|
||||
* The SCT retains ownership of this pointer.
|
||||
* Returns length of the data pointed to.
|
||||
*/
|
||||
size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext);
|
||||
|
||||
/*
|
||||
* Set the extensions of an SCT to point directly to the *ext specified.
|
||||
* The SCT takes ownership of the specified pointer.
|
||||
*/
|
||||
void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len);
|
||||
|
||||
/*
|
||||
* Set the extensions of an SCT.
|
||||
* This takes a copy of the ext.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext,
|
||||
size_t ext_len);
|
||||
|
||||
/*
|
||||
* Set *sig to point to the signature for the SCT. sig must not be NULL.
|
||||
* The SCT retains ownership of this pointer.
|
||||
* Returns length of the data pointed to.
|
||||
*/
|
||||
size_t SCT_get0_signature(const SCT *sct, unsigned char **sig);
|
||||
|
||||
/*
|
||||
* Set the signature of an SCT to point directly to the *sig specified.
|
||||
* The SCT takes ownership of the specified pointer.
|
||||
*/
|
||||
void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len);
|
||||
|
||||
/*
|
||||
* Set the signature of an SCT to be a copy of the *sig specified.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig,
|
||||
size_t sig_len);
|
||||
|
||||
/*
|
||||
* The origin of this SCT, e.g. TLS extension, OCSP response, etc.
|
||||
*/
|
||||
sct_source_t SCT_get_source(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Set the origin of this SCT, e.g. TLS extension, OCSP response, etc.
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
__owur int SCT_set_source(SCT *sct, sct_source_t source);
|
||||
|
||||
/*
|
||||
* Returns a text string describing the validation status of |sct|.
|
||||
*/
|
||||
const char *SCT_validation_status_string(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Pretty-prints an |sct| to |out|.
|
||||
* It will be indented by the number of spaces specified by |indent|.
|
||||
* If |logs| is not NULL, it will be used to lookup the CT log that the SCT came
|
||||
* from, so that the log name can be printed.
|
||||
*/
|
||||
void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs);
|
||||
|
||||
/*
|
||||
* Pretty-prints an |sct_list| to |out|.
|
||||
* It will be indented by the number of spaces specified by |indent|.
|
||||
* SCTs will be delimited by |separator|.
|
||||
* If |logs| is not NULL, it will be used to lookup the CT log that each SCT
|
||||
* came from, so that the log names can be printed.
|
||||
*/
|
||||
void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent,
|
||||
const char *separator, const CTLOG_STORE *logs);
|
||||
|
||||
/*
|
||||
* Gets the last result of validating this SCT.
|
||||
* If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET.
|
||||
*/
|
||||
sct_validation_status_t SCT_get_validation_status(const SCT *sct);
|
||||
|
||||
/*
|
||||
* Validates the given SCT with the provided context.
|
||||
* Sets the "validation_status" field of the SCT.
|
||||
* Returns 1 if the SCT is valid and the signature verifies.
|
||||
* Returns 0 if the SCT is invalid or could not be verified.
|
||||
* Returns -1 if an error occurs.
|
||||
*/
|
||||
__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/*
|
||||
* Validates the given list of SCTs with the provided context.
|
||||
* Sets the "validation_status" field of each SCT.
|
||||
* Returns 1 if there are no invalid SCTs and all signatures verify.
|
||||
* Returns 0 if at least one SCT is invalid or could not be verified.
|
||||
* Returns a negative integer if an error occurs.
|
||||
*/
|
||||
__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts,
|
||||
CT_POLICY_EVAL_CTX *ctx);
|
||||
|
||||
/*********************************
|
||||
* SCT parsing and serialization *
|
||||
*********************************/
|
||||
|
||||
/*
|
||||
* Serialize (to TLS format) a stack of SCTs and return the length.
|
||||
* "a" must not be NULL.
|
||||
* If "pp" is NULL, just return the length of what would have been serialized.
|
||||
* If "pp" is not NULL and "*pp" is null, function will allocate a new pointer
|
||||
* for data that caller is responsible for freeing (only if function returns
|
||||
* successfully).
|
||||
* If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring
|
||||
* that "*pp" is large enough to accept all of the serialized data.
|
||||
* Returns < 0 on error, >= 0 indicating bytes written (or would have been)
|
||||
* on success.
|
||||
*/
|
||||
__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp);
|
||||
|
||||
/*
|
||||
* Convert TLS format SCT list to a stack of SCTs.
|
||||
* If "a" or "*a" is NULL, a new stack will be created that the caller is
|
||||
* responsible for freeing (by calling SCT_LIST_free).
|
||||
* "**pp" and "*pp" must not be NULL.
|
||||
* Upon success, "*pp" will point to after the last bytes read, and a stack
|
||||
* will be returned.
|
||||
* Upon failure, a NULL pointer will be returned, and the position of "*pp" is
|
||||
* not defined.
|
||||
*/
|
||||
STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp,
|
||||
size_t len);
|
||||
|
||||
/*
|
||||
* Serialize (to DER format) a stack of SCTs and return the length.
|
||||
* "a" must not be NULL.
|
||||
* If "pp" is NULL, just returns the length of what would have been serialized.
|
||||
* If "pp" is not NULL and "*pp" is null, function will allocate a new pointer
|
||||
* for data that caller is responsible for freeing (only if function returns
|
||||
* successfully).
|
||||
* If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring
|
||||
* that "*pp" is large enough to accept all of the serialized data.
|
||||
* Returns < 0 on error, >= 0 indicating bytes written (or would have been)
|
||||
* on success.
|
||||
*/
|
||||
__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp);
|
||||
|
||||
/*
|
||||
* Parses an SCT list in DER format and returns it.
|
||||
* If "a" or "*a" is NULL, a new stack will be created that the caller is
|
||||
* responsible for freeing (by calling SCT_LIST_free).
|
||||
* "**pp" and "*pp" must not be NULL.
|
||||
* Upon success, "*pp" will point to after the last bytes read, and a stack
|
||||
* will be returned.
|
||||
* Upon failure, a NULL pointer will be returned, and the position of "*pp" is
|
||||
* not defined.
|
||||
*/
|
||||
STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp,
|
||||
long len);
|
||||
|
||||
/*
|
||||
* Serialize (to TLS format) an |sct| and write it to |out|.
|
||||
* If |out| is null, no SCT will be output but the length will still be returned.
|
||||
* If |out| points to a null pointer, a string will be allocated to hold the
|
||||
* TLS-format SCT. It is the responsibility of the caller to free it.
|
||||
* If |out| points to an allocated string, the TLS-format SCT will be written
|
||||
* to it.
|
||||
* The length of the SCT in TLS format will be returned.
|
||||
*/
|
||||
__owur int i2o_SCT(const SCT *sct, unsigned char **out);
|
||||
|
||||
/*
|
||||
* Parses an SCT in TLS format and returns it.
|
||||
* If |psct| is not null, it will end up pointing to the parsed SCT. If it
|
||||
* already points to a non-null pointer, the pointer will be free'd.
|
||||
* |in| should be a pointer to a string containing the TLS-format SCT.
|
||||
* |in| will be advanced to the end of the SCT if parsing succeeds.
|
||||
* |len| should be the length of the SCT in |in|.
|
||||
* Returns NULL if an error occurs.
|
||||
* If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len'
|
||||
* fields will be populated (with |in| and |len| respectively).
|
||||
*/
|
||||
SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len);
|
||||
|
||||
/********************
|
||||
* CT log functions *
|
||||
********************/
|
||||
|
||||
/*
|
||||
* Creates a new CT log instance with the given |public_key| and |name| and
|
||||
* associates it with the give library context |libctx| and property query
|
||||
* string |propq|.
|
||||
* Takes ownership of |public_key| but copies |name|.
|
||||
* Returns NULL if malloc fails or if |public_key| cannot be converted to DER.
|
||||
* Should be deleted by the caller using CTLOG_free when no longer needed.
|
||||
*/
|
||||
CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
/*
|
||||
* The same as CTLOG_new_ex except that the default library context and
|
||||
* property query string are used.
|
||||
*/
|
||||
CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name);
|
||||
|
||||
/*
|
||||
* Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER
|
||||
* in |pkey_base64| and associated with the given library context |libctx| and
|
||||
* property query string |propq|. The |name| is a string to help users identify
|
||||
* this log.
|
||||
* Returns 1 on success, 0 on failure.
|
||||
* Should be deleted by the caller using CTLOG_free when no longer needed.
|
||||
*/
|
||||
int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64,
|
||||
const char *name, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
/*
|
||||
* The same as CTLOG_new_from_base64_ex() except that the default
|
||||
* library context and property query string are used.
|
||||
* Returns 1 on success, 0 on failure.
|
||||
*/
|
||||
int CTLOG_new_from_base64(CTLOG **ct_log,
|
||||
const char *pkey_base64, const char *name);
|
||||
|
||||
/*
|
||||
* Deletes a CT log instance and its fields.
|
||||
*/
|
||||
void CTLOG_free(CTLOG *log);
|
||||
|
||||
/* Gets the name of the CT log */
|
||||
const char *CTLOG_get0_name(const CTLOG *log);
|
||||
/* Gets the ID of the CT log */
|
||||
void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id,
|
||||
size_t *log_id_len);
|
||||
/* Gets the public key of the CT log */
|
||||
EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log);
|
||||
|
||||
/**************************
|
||||
* CT log store functions *
|
||||
**************************/
|
||||
|
||||
/*
|
||||
* Creates a new CT log store and associates it with the given libctx and
|
||||
* property query string.
|
||||
* Should be deleted by the caller using CTLOG_STORE_free when no longer needed.
|
||||
*/
|
||||
CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
/*
|
||||
* Same as CTLOG_STORE_new_ex except that the default libctx and
|
||||
* property query string are used.
|
||||
* Should be deleted by the caller using CTLOG_STORE_free when no longer needed.
|
||||
*/
|
||||
CTLOG_STORE *CTLOG_STORE_new(void);
|
||||
|
||||
/*
|
||||
* Deletes a CT log store and all of the CT log instances held within.
|
||||
*/
|
||||
void CTLOG_STORE_free(CTLOG_STORE *store);
|
||||
|
||||
/*
|
||||
* Finds a CT log in the store based on its log ID.
|
||||
* Returns the CT log, or NULL if no match is found.
|
||||
*/
|
||||
const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store,
|
||||
const uint8_t *log_id,
|
||||
size_t log_id_len);
|
||||
|
||||
/*
|
||||
* Loads a CT log list into a |store| from a |file|.
|
||||
* Returns 1 if loading is successful, or 0 otherwise.
|
||||
*/
|
||||
__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file);
|
||||
|
||||
/*
|
||||
* Loads the default CT log list into a |store|.
|
||||
* Returns 1 if loading is successful, or 0 otherwise.
|
||||
*/
|
||||
__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,517 @@
|
||||
/*
|
||||
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_ERR_H
|
||||
#define OPENSSL_ERR_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_ERR_H
|
||||
#endif
|
||||
|
||||
#include <openssl/e_os2.h>
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/lhash.h>
|
||||
#include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#ifndef OPENSSL_NO_FILENAMES
|
||||
#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, fn, ln)
|
||||
#else
|
||||
#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, NULL, 0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define ERR_TXT_MALLOCED 0x01
|
||||
#define ERR_TXT_STRING 0x02
|
||||
|
||||
#if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE)
|
||||
#define ERR_FLAG_MARK 0x01
|
||||
#define ERR_FLAG_CLEAR 0x02
|
||||
|
||||
#define ERR_NUM_ERRORS 16
|
||||
struct err_state_st {
|
||||
int err_flags[ERR_NUM_ERRORS];
|
||||
int err_marks[ERR_NUM_ERRORS];
|
||||
unsigned long err_buffer[ERR_NUM_ERRORS];
|
||||
char *err_data[ERR_NUM_ERRORS];
|
||||
size_t err_data_size[ERR_NUM_ERRORS];
|
||||
int err_data_flags[ERR_NUM_ERRORS];
|
||||
char *err_file[ERR_NUM_ERRORS];
|
||||
int err_line[ERR_NUM_ERRORS];
|
||||
char *err_func[ERR_NUM_ERRORS];
|
||||
int top, bottom;
|
||||
};
|
||||
#endif
|
||||
|
||||
/* library */
|
||||
#define ERR_LIB_NONE 1
|
||||
#define ERR_LIB_SYS 2
|
||||
#define ERR_LIB_BN 3
|
||||
#define ERR_LIB_RSA 4
|
||||
#define ERR_LIB_DH 5
|
||||
#define ERR_LIB_EVP 6
|
||||
#define ERR_LIB_BUF 7
|
||||
#define ERR_LIB_OBJ 8
|
||||
#define ERR_LIB_PEM 9
|
||||
#define ERR_LIB_DSA 10
|
||||
#define ERR_LIB_X509 11
|
||||
/* #define ERR_LIB_METH 12 */
|
||||
#define ERR_LIB_ASN1 13
|
||||
#define ERR_LIB_CONF 14
|
||||
#define ERR_LIB_CRYPTO 15
|
||||
#define ERR_LIB_EC 16
|
||||
#define ERR_LIB_SSL 20
|
||||
/* #define ERR_LIB_SSL23 21 */
|
||||
/* #define ERR_LIB_SSL2 22 */
|
||||
/* #define ERR_LIB_SSL3 23 */
|
||||
/* #define ERR_LIB_RSAREF 30 */
|
||||
/* #define ERR_LIB_PROXY 31 */
|
||||
#define ERR_LIB_BIO 32
|
||||
#define ERR_LIB_PKCS7 33
|
||||
#define ERR_LIB_X509V3 34
|
||||
#define ERR_LIB_PKCS12 35
|
||||
#define ERR_LIB_RAND 36
|
||||
#define ERR_LIB_DSO 37
|
||||
#define ERR_LIB_ENGINE 38
|
||||
#define ERR_LIB_OCSP 39
|
||||
#define ERR_LIB_UI 40
|
||||
#define ERR_LIB_COMP 41
|
||||
#define ERR_LIB_ECDSA 42
|
||||
#define ERR_LIB_ECDH 43
|
||||
#define ERR_LIB_OSSL_STORE 44
|
||||
#define ERR_LIB_FIPS 45
|
||||
#define ERR_LIB_CMS 46
|
||||
#define ERR_LIB_TS 47
|
||||
#define ERR_LIB_HMAC 48
|
||||
/* # define ERR_LIB_JPAKE 49 */
|
||||
#define ERR_LIB_CT 50
|
||||
#define ERR_LIB_ASYNC 51
|
||||
#define ERR_LIB_KDF 52
|
||||
#define ERR_LIB_SM2 53
|
||||
#define ERR_LIB_ESS 54
|
||||
#define ERR_LIB_PROP 55
|
||||
#define ERR_LIB_CRMF 56
|
||||
#define ERR_LIB_PROV 57
|
||||
#define ERR_LIB_CMP 58
|
||||
#define ERR_LIB_OSSL_ENCODER 59
|
||||
#define ERR_LIB_OSSL_DECODER 60
|
||||
#define ERR_LIB_HTTP 61
|
||||
|
||||
#define ERR_LIB_USER 128
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL)
|
||||
#define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL)
|
||||
#define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL)
|
||||
#define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL)
|
||||
#define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL)
|
||||
#define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL)
|
||||
#define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL)
|
||||
#define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL)
|
||||
#define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL)
|
||||
#define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL)
|
||||
#define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL)
|
||||
#define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL)
|
||||
#define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL)
|
||||
#define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL)
|
||||
#define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL)
|
||||
#define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL)
|
||||
#define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL)
|
||||
#define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL)
|
||||
#define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL)
|
||||
#define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL)
|
||||
#define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL)
|
||||
#define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL)
|
||||
#define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL)
|
||||
#define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL)
|
||||
#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL)
|
||||
#define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL)
|
||||
#define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL)
|
||||
#define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL)
|
||||
#define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL)
|
||||
#define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL)
|
||||
#define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL)
|
||||
#define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL)
|
||||
#define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL)
|
||||
#define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL)
|
||||
#define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL)
|
||||
#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL)
|
||||
#define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL)
|
||||
#define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL)
|
||||
#define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL)
|
||||
#define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL)
|
||||
#define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL)
|
||||
#define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL)
|
||||
#define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL)
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* The error code packs differently depending on if it records a system
|
||||
* error or an OpenSSL error.
|
||||
*
|
||||
* A system error packs like this (we follow POSIX and only allow positive
|
||||
* numbers that fit in an |int|):
|
||||
*
|
||||
* +-+-------------------------------------------------------------+
|
||||
* |1| system error number |
|
||||
* +-+-------------------------------------------------------------+
|
||||
*
|
||||
* An OpenSSL error packs like this:
|
||||
*
|
||||
* <---------------------------- 32 bits -------------------------->
|
||||
* <--- 8 bits ---><------------------ 23 bits ----------------->
|
||||
* +-+---------------+---------------------------------------------+
|
||||
* |0| library | reason |
|
||||
* +-+---------------+---------------------------------------------+
|
||||
*
|
||||
* A few of the reason bits are reserved as flags with special meaning:
|
||||
*
|
||||
* <5 bits-<>--------- 19 bits ----------------->
|
||||
* +-------+-+-----------------------------------+
|
||||
* | rflags| | reason |
|
||||
* +-------+-+-----------------------------------+
|
||||
* ^
|
||||
* |
|
||||
* ERR_RFLAG_FATAL = ERR_R_FATAL
|
||||
*
|
||||
* The reason flags are part of the overall reason code for practical
|
||||
* reasons, as they provide an easy way to place different types of
|
||||
* reason codes in different numeric ranges.
|
||||
*
|
||||
* The currently known reason flags are:
|
||||
*
|
||||
* ERR_RFLAG_FATAL Flags that the reason code is considered fatal.
|
||||
* For backward compatibility reasons, this flag
|
||||
* is also the code for ERR_R_FATAL (that reason
|
||||
* code served the dual purpose of flag and reason
|
||||
* code in one in pre-3.0 OpenSSL).
|
||||
* ERR_RFLAG_COMMON Flags that the reason code is common to all
|
||||
* libraries. All ERR_R_ macros must use this flag,
|
||||
* and no other _R_ macro is allowed to use it.
|
||||
*/
|
||||
|
||||
/* Macros to help decode recorded system errors */
|
||||
#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
|
||||
#define ERR_SYSTEM_MASK ((unsigned int)INT_MAX)
|
||||
|
||||
/*
|
||||
* Macros to help decode recorded OpenSSL errors
|
||||
* As expressed above, RFLAGS and REASON overlap by one bit to allow
|
||||
* ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code.
|
||||
*/
|
||||
#define ERR_LIB_OFFSET 23L
|
||||
#define ERR_LIB_MASK 0xFF
|
||||
#define ERR_RFLAGS_OFFSET 18L
|
||||
#define ERR_RFLAGS_MASK 0x1F
|
||||
#define ERR_REASON_MASK 0X7FFFFF
|
||||
|
||||
/*
|
||||
* Reason flags are defined pre-shifted to easily combine with the reason
|
||||
* number.
|
||||
*/
|
||||
#define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET)
|
||||
#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
|
||||
|
||||
#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
|
||||
|
||||
static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode)
|
||||
{
|
||||
if (ERR_SYSTEM_ERROR(errcode))
|
||||
return ERR_LIB_SYS;
|
||||
return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
|
||||
}
|
||||
|
||||
static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode)
|
||||
{
|
||||
if (ERR_SYSTEM_ERROR(errcode))
|
||||
return 0;
|
||||
return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET);
|
||||
}
|
||||
|
||||
static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode)
|
||||
{
|
||||
if (ERR_SYSTEM_ERROR(errcode))
|
||||
return errcode & ERR_SYSTEM_MASK;
|
||||
return errcode & ERR_REASON_MASK;
|
||||
}
|
||||
|
||||
static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode)
|
||||
{
|
||||
return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0;
|
||||
}
|
||||
|
||||
static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode)
|
||||
{
|
||||
return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* ERR_PACK is a helper macro to properly pack OpenSSL error codes and may
|
||||
* only be used for that purpose. System errors are packed internally.
|
||||
* ERR_PACK takes reason flags and reason code combined in |reason|.
|
||||
* ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL.
|
||||
*/
|
||||
#define ERR_PACK(lib, func, reason) \
|
||||
((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK)))
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define SYS_F_FOPEN 0
|
||||
#define SYS_F_CONNECT 0
|
||||
#define SYS_F_GETSERVBYNAME 0
|
||||
#define SYS_F_SOCKET 0
|
||||
#define SYS_F_IOCTLSOCKET 0
|
||||
#define SYS_F_BIND 0
|
||||
#define SYS_F_LISTEN 0
|
||||
#define SYS_F_ACCEPT 0
|
||||
#define SYS_F_WSASTARTUP 0
|
||||
#define SYS_F_OPENDIR 0
|
||||
#define SYS_F_FREAD 0
|
||||
#define SYS_F_GETADDRINFO 0
|
||||
#define SYS_F_GETNAMEINFO 0
|
||||
#define SYS_F_SETSOCKOPT 0
|
||||
#define SYS_F_GETSOCKOPT 0
|
||||
#define SYS_F_GETSOCKNAME 0
|
||||
#define SYS_F_GETHOSTBYNAME 0
|
||||
#define SYS_F_FFLUSH 0
|
||||
#define SYS_F_OPEN 0
|
||||
#define SYS_F_CLOSE 0
|
||||
#define SYS_F_IOCTL 0
|
||||
#define SYS_F_STAT 0
|
||||
#define SYS_F_FCNTL 0
|
||||
#define SYS_F_FSTAT 0
|
||||
#define SYS_F_SENDFILE 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* All ERR_R_ codes must be combined with ERR_RFLAG_COMMON.
|
||||
*/
|
||||
|
||||
/* "we came from here" global reason codes, range 1..255 */
|
||||
#define ERR_R_SYS_LIB (ERR_LIB_SYS /* 2 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_BN_LIB (ERR_LIB_BN /* 3 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_RSA_LIB (ERR_LIB_RSA /* 4 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_DH_LIB (ERR_LIB_DH /* 5 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_EVP_LIB (ERR_LIB_EVP /* 6 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_BUF_LIB (ERR_LIB_BUF /* 7 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_OBJ_LIB (ERR_LIB_OBJ /* 8 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_PEM_LIB (ERR_LIB_PEM /* 9 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_DSA_LIB (ERR_LIB_DSA /* 10 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_X509_LIB (ERR_LIB_X509 /* 11 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_ASN1_LIB (ERR_LIB_ASN1 /* 13 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_CONF_LIB (ERR_LIB_CONF /* 14 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO /* 15 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_EC_LIB (ERR_LIB_EC /* 16 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_SSL_LIB (ERR_LIB_SSL /* 20 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_BIO_LIB (ERR_LIB_BIO /* 32 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7 /* 33 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_X509V3_LIB (ERR_LIB_X509V3 /* 34 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_PKCS12_LIB (ERR_LIB_PKCS12 /* 35 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_RAND_LIB (ERR_LIB_RAND /* 36 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_DSO_LIB (ERR_LIB_DSO /* 37 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE /* 38 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_UI_LIB (ERR_LIB_UI /* 40 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA /* 42 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE /* 44 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_CMS_LIB (ERR_LIB_CMS /* 46 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_TS_LIB (ERR_LIB_TS /* 47 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_CT_LIB (ERR_LIB_CT /* 50 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_PROV_LIB (ERR_LIB_PROV /* 57 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_ESS_LIB (ERR_LIB_ESS /* 54 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_CMP_LIB (ERR_LIB_CMP /* 58 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_OSSL_ENCODER_LIB (ERR_LIB_OSSL_ENCODER /* 59 */ | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER /* 60 */ | ERR_RFLAG_COMMON)
|
||||
|
||||
/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */
|
||||
#define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_MALLOC_FAILURE (256 | ERR_R_FATAL)
|
||||
#define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257 | ERR_R_FATAL)
|
||||
#define ERR_R_PASSED_NULL_PARAMETER (258 | ERR_R_FATAL)
|
||||
#define ERR_R_INTERNAL_ERROR (259 | ERR_R_FATAL)
|
||||
#define ERR_R_DISABLED (260 | ERR_R_FATAL)
|
||||
#define ERR_R_INIT_FAIL (261 | ERR_R_FATAL)
|
||||
#define ERR_R_PASSED_INVALID_ARGUMENT (262 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_OPERATION_FAIL (263 | ERR_R_FATAL)
|
||||
#define ERR_R_INVALID_PROVIDER_FUNCTIONS (264 | ERR_R_FATAL)
|
||||
#define ERR_R_INTERRUPTED_OR_CANCELLED (265 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_NESTED_ASN1_ERROR (266 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_MISSING_ASN1_EOS (267 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_INVALID_PROPERTY_DEFINITION (270 | ERR_RFLAG_COMMON)
|
||||
#define ERR_R_UNABLE_TO_GET_READ_LOCK (271 | ERR_R_FATAL)
|
||||
#define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272 | ERR_R_FATAL)
|
||||
|
||||
typedef struct ERR_string_data_st {
|
||||
unsigned long error;
|
||||
const char *string;
|
||||
} ERR_STRING_DATA;
|
||||
|
||||
/* clang-format off */
|
||||
DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA);
|
||||
#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk))
|
||||
#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh))
|
||||
#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh))
|
||||
#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr)))
|
||||
#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr)))
|
||||
#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr)))
|
||||
#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh))
|
||||
#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh))
|
||||
#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out)
|
||||
#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out)
|
||||
#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out)
|
||||
#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh))
|
||||
#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl)
|
||||
#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* 12 lines and some on an 80 column terminal */
|
||||
#define ERR_MAX_DATA_SIZE 1024
|
||||
|
||||
/* Building blocks */
|
||||
void ERR_new(void);
|
||||
void ERR_set_debug(const char *file, int line, const char *func);
|
||||
void ERR_set_error(int lib, int reason, const char *fmt, ...);
|
||||
void ERR_vset_error(int lib, int reason, const char *fmt, va_list args);
|
||||
|
||||
/* Main error raising functions */
|
||||
#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL)
|
||||
#define ERR_raise_data \
|
||||
(ERR_new(), \
|
||||
ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
|
||||
ERR_set_error)
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
/* Backward compatibility */
|
||||
#define ERR_put_error(lib, func, reason, file, line) \
|
||||
(ERR_new(), \
|
||||
ERR_set_debug((file), (line), OPENSSL_FUNC), \
|
||||
ERR_set_error((lib), (reason), NULL))
|
||||
#endif
|
||||
|
||||
void ERR_set_error_data(char *data, int flags);
|
||||
|
||||
unsigned long ERR_get_error(void);
|
||||
unsigned long ERR_get_error_all(const char **file, int *line,
|
||||
const char **func,
|
||||
const char **data, int *flags);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
unsigned long ERR_get_error_line(const char **file, int *line);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
unsigned long ERR_get_error_line_data(const char **file, int *line,
|
||||
const char **data, int *flags);
|
||||
#endif
|
||||
unsigned long ERR_peek_error(void);
|
||||
unsigned long ERR_peek_error_line(const char **file, int *line);
|
||||
unsigned long ERR_peek_error_func(const char **func);
|
||||
unsigned long ERR_peek_error_data(const char **data, int *flags);
|
||||
unsigned long ERR_peek_error_all(const char **file, int *line,
|
||||
const char **func,
|
||||
const char **data, int *flags);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
unsigned long ERR_peek_error_line_data(const char **file, int *line,
|
||||
const char **data, int *flags);
|
||||
#endif
|
||||
unsigned long ERR_peek_last_error(void);
|
||||
unsigned long ERR_peek_last_error_line(const char **file, int *line);
|
||||
unsigned long ERR_peek_last_error_func(const char **func);
|
||||
unsigned long ERR_peek_last_error_data(const char **data, int *flags);
|
||||
unsigned long ERR_peek_last_error_all(const char **file, int *line,
|
||||
const char **func,
|
||||
const char **data, int *flags);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
unsigned long ERR_peek_last_error_line_data(const char **file, int *line,
|
||||
const char **data, int *flags);
|
||||
#endif
|
||||
|
||||
void ERR_clear_error(void);
|
||||
|
||||
char *ERR_error_string(unsigned long e, char *buf);
|
||||
void ERR_error_string_n(unsigned long e, char *buf, size_t len);
|
||||
const char *ERR_lib_error_string(unsigned long e);
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e);
|
||||
#endif
|
||||
const char *ERR_reason_error_string(unsigned long e);
|
||||
|
||||
void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u),
|
||||
void *u);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
void ERR_print_errors_fp(FILE *fp);
|
||||
#endif
|
||||
void ERR_print_errors(BIO *bp);
|
||||
|
||||
void ERR_add_error_data(int num, ...);
|
||||
void ERR_add_error_vdata(int num, va_list args);
|
||||
void ERR_add_error_txt(const char *sepr, const char *txt);
|
||||
void ERR_add_error_mem_bio(const char *sep, BIO *bio);
|
||||
|
||||
int ERR_load_strings(int lib, ERR_STRING_DATA *str);
|
||||
int ERR_load_strings_const(const ERR_STRING_DATA *str);
|
||||
int ERR_unload_strings(int lib, ERR_STRING_DATA *str);
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define ERR_load_crypto_strings() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
|
||||
#define ERR_free_strings() \
|
||||
while (0) \
|
||||
continue
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_0_0
|
||||
OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void);
|
||||
#endif
|
||||
|
||||
int ERR_get_next_error_library(void);
|
||||
|
||||
int ERR_set_mark(void);
|
||||
int ERR_pop_to_mark(void);
|
||||
int ERR_clear_last_mark(void);
|
||||
int ERR_count_to_mark(void);
|
||||
int ERR_pop(void);
|
||||
|
||||
ERR_STATE *OSSL_ERR_STATE_new(void);
|
||||
void OSSL_ERR_STATE_save(ERR_STATE *es);
|
||||
void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es);
|
||||
void OSSL_ERR_STATE_restore(const ERR_STATE *es);
|
||||
void OSSL_ERR_STATE_free(ERR_STATE *es);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/ess.h.in
|
||||
*
|
||||
* Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_ESS_H
|
||||
#define OPENSSL_ESS_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/esserr.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL;
|
||||
typedef struct ESS_cert_id ESS_CERT_ID;
|
||||
typedef struct ESS_signing_cert ESS_SIGNING_CERT;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID)
|
||||
#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx)))
|
||||
#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp)))
|
||||
#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null())
|
||||
#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n)))
|
||||
#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n))
|
||||
#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i)))
|
||||
#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)))
|
||||
#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))
|
||||
#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))
|
||||
#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc))
|
||||
#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx))
|
||||
#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr)))
|
||||
#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))
|
||||
#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))
|
||||
#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum)
|
||||
#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc)))
|
||||
#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2;
|
||||
typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2)
|
||||
#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx)))
|
||||
#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp)))
|
||||
#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null())
|
||||
#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n)))
|
||||
#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n))
|
||||
#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i)))
|
||||
#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)))
|
||||
#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))
|
||||
#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))
|
||||
#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))
|
||||
#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx))
|
||||
#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr)))
|
||||
#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))
|
||||
#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))
|
||||
#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum)
|
||||
#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))
|
||||
#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)))
|
||||
#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)))
|
||||
#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL)
|
||||
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT)
|
||||
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2)
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2)
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2)
|
||||
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2)
|
||||
|
||||
ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert,
|
||||
const STACK_OF(X509) *certs,
|
||||
int set_issuer_serial);
|
||||
ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg,
|
||||
const X509 *signcert,
|
||||
const STACK_OF(X509) *certs,
|
||||
int set_issuer_serial);
|
||||
int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss,
|
||||
const ESS_SIGNING_CERT_V2 *ssv2,
|
||||
const STACK_OF(X509) *chain,
|
||||
int require_signing_cert);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/fipskey.h.in
|
||||
*
|
||||
* Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_FIPSKEY_H
|
||||
#define OPENSSL_FIPSKEY_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The FIPS validation HMAC key, usable as an array initializer.
|
||||
*/
|
||||
/* clang-format off */
|
||||
#define FIPS_KEY_ELEMENTS \
|
||||
0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* The FIPS validation key, as a string.
|
||||
*/
|
||||
/* clang-format off */
|
||||
#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813"
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* The FIPS provider vendor name, as a string.
|
||||
*/
|
||||
/* clang-format off */
|
||||
#define FIPS_VENDOR "OpenSSL FIPS Provider"
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,417 @@
|
||||
/*
|
||||
* Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* Header for dynamic hash table routines Author - Eric Young
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_LHASH_H
|
||||
#define OPENSSL_LHASH_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_LHASH_H
|
||||
#endif
|
||||
|
||||
#include <openssl/e_os2.h>
|
||||
#include <openssl/bio.h>
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct lhash_node_st OPENSSL_LH_NODE;
|
||||
typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *);
|
||||
typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn);
|
||||
typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *);
|
||||
typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn);
|
||||
typedef void (*OPENSSL_LH_DOALL_FUNC)(void *);
|
||||
typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall);
|
||||
typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *);
|
||||
typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall);
|
||||
typedef struct lhash_st OPENSSL_LHASH;
|
||||
|
||||
/*
|
||||
* Macros for declaring and implementing type-safe wrappers for LHASH
|
||||
* callbacks. This way, callbacks can be provided to LHASH structures without
|
||||
* function pointer casting and the macro-defined callbacks provide
|
||||
* per-variable casting before deferring to the underlying type-specific
|
||||
* callbacks. NB: It is possible to place a "static" in front of both the
|
||||
* DECLARE and IMPLEMENT macros if the functions are strictly internal.
|
||||
*/
|
||||
|
||||
/* First: "hash" functions */
|
||||
#define DECLARE_LHASH_HASH_FN(name, o_type) \
|
||||
unsigned long name##_LHASH_HASH(const void *);
|
||||
#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \
|
||||
unsigned long name##_LHASH_HASH(const void *arg) \
|
||||
{ \
|
||||
const o_type *a = arg; \
|
||||
return name##_hash(a); \
|
||||
}
|
||||
#define LHASH_HASH_FN(name) name##_LHASH_HASH
|
||||
|
||||
/* Second: "compare" functions */
|
||||
#define DECLARE_LHASH_COMP_FN(name, o_type) \
|
||||
int name##_LHASH_COMP(const void *, const void *);
|
||||
#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \
|
||||
int name##_LHASH_COMP(const void *arg1, const void *arg2) \
|
||||
{ \
|
||||
const o_type *a = arg1; \
|
||||
const o_type *b = arg2; \
|
||||
return name##_cmp(a, b); \
|
||||
}
|
||||
#define LHASH_COMP_FN(name) name##_LHASH_COMP
|
||||
|
||||
/* Fourth: "doall_arg" functions */
|
||||
#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
|
||||
void name##_LHASH_DOALL_ARG(void *, void *);
|
||||
#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
|
||||
void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \
|
||||
{ \
|
||||
o_type *a = arg1; \
|
||||
a_type *b = arg2; \
|
||||
name##_doall_arg(a, b); \
|
||||
}
|
||||
#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG
|
||||
|
||||
#define LH_LOAD_MULT 256
|
||||
|
||||
int OPENSSL_LH_error(OPENSSL_LHASH *lh);
|
||||
OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c);
|
||||
OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh,
|
||||
OPENSSL_LH_HASHFUNCTHUNK hw,
|
||||
OPENSSL_LH_COMPFUNCTHUNK cw,
|
||||
OPENSSL_LH_DOALL_FUNC_THUNK daw,
|
||||
OPENSSL_LH_DOALL_FUNCARG_THUNK daaw);
|
||||
void OPENSSL_LH_free(OPENSSL_LHASH *lh);
|
||||
void OPENSSL_LH_flush(OPENSSL_LHASH *lh);
|
||||
void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data);
|
||||
void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data);
|
||||
void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data);
|
||||
void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func);
|
||||
void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh,
|
||||
OPENSSL_LH_DOALL_FUNCARG func, void *arg);
|
||||
void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh,
|
||||
OPENSSL_LH_DOALL_FUNCARG_THUNK daaw,
|
||||
OPENSSL_LH_DOALL_FUNCARG fn, void *arg);
|
||||
|
||||
unsigned long OPENSSL_LH_strhash(const char *c);
|
||||
unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh);
|
||||
unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh);
|
||||
void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load);
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_1
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp);
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp);
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp);
|
||||
#endif
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_1
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out);
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out);
|
||||
OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out);
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define _LHASH OPENSSL_LHASH
|
||||
#define LHASH_NODE OPENSSL_LH_NODE
|
||||
#define lh_error OPENSSL_LH_error
|
||||
#define lh_new OPENSSL_LH_new
|
||||
#define lh_free OPENSSL_LH_free
|
||||
#define lh_insert OPENSSL_LH_insert
|
||||
#define lh_delete OPENSSL_LH_delete
|
||||
#define lh_retrieve OPENSSL_LH_retrieve
|
||||
#define lh_doall OPENSSL_LH_doall
|
||||
#define lh_doall_arg OPENSSL_LH_doall_arg
|
||||
#define lh_strhash OPENSSL_LH_strhash
|
||||
#define lh_num_items OPENSSL_LH_num_items
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#define lh_stats OPENSSL_LH_stats
|
||||
#define lh_node_stats OPENSSL_LH_node_stats
|
||||
#define lh_node_usage_stats OPENSSL_LH_node_usage_stats
|
||||
#endif
|
||||
#define lh_stats_bio OPENSSL_LH_stats_bio
|
||||
#define lh_node_stats_bio OPENSSL_LH_node_stats_bio
|
||||
#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio
|
||||
#endif
|
||||
|
||||
/* Type checking... */
|
||||
|
||||
#define LHASH_OF(type) struct lhash_st_##type
|
||||
|
||||
/* Helper macro for internal use */
|
||||
#define DEFINE_LHASH_OF_INTERNAL(type) \
|
||||
LHASH_OF(type) \
|
||||
{ \
|
||||
union lh_##type##_dummy { \
|
||||
void *d1; \
|
||||
unsigned long d2; \
|
||||
int d3; \
|
||||
} dummy; \
|
||||
}; \
|
||||
typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \
|
||||
typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \
|
||||
typedef void (*lh_##type##_doallfunc)(type * a); \
|
||||
static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \
|
||||
{ \
|
||||
unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \
|
||||
return hfn_conv((const type *)data); \
|
||||
} \
|
||||
static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \
|
||||
{ \
|
||||
int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \
|
||||
return cfn_conv((const type *)da, (const type *)db); \
|
||||
} \
|
||||
static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \
|
||||
{ \
|
||||
void (*doall_conv)(type *) = (void (*)(type *))doall; \
|
||||
doall_conv((type *)node); \
|
||||
} \
|
||||
static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \
|
||||
{ \
|
||||
void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \
|
||||
doall_conv((type *)node, arg); \
|
||||
} \
|
||||
static ossl_unused ossl_inline type * \
|
||||
ossl_check_##type##_lh_plain_type(type *ptr) \
|
||||
{ \
|
||||
return ptr; \
|
||||
} \
|
||||
static ossl_unused ossl_inline const type * \
|
||||
ossl_check_const_##type##_lh_plain_type(const type *ptr) \
|
||||
{ \
|
||||
return ptr; \
|
||||
} \
|
||||
static ossl_unused ossl_inline const OPENSSL_LHASH * \
|
||||
ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
return (const OPENSSL_LHASH *)lh; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_LHASH * \
|
||||
ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
return (OPENSSL_LHASH *)lh; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \
|
||||
ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \
|
||||
{ \
|
||||
return (OPENSSL_LH_COMPFUNC)cmp; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \
|
||||
ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \
|
||||
{ \
|
||||
return (OPENSSL_LH_HASHFUNC)hfn; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \
|
||||
ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \
|
||||
{ \
|
||||
return (OPENSSL_LH_DOALL_FUNC)dfn; \
|
||||
} \
|
||||
LHASH_OF(type)
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_1
|
||||
#define DEFINE_LHASH_OF_DEPRECATED(type) \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \
|
||||
{ \
|
||||
OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \
|
||||
{ \
|
||||
OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \
|
||||
{ \
|
||||
OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \
|
||||
}
|
||||
#else
|
||||
#define DEFINE_LHASH_OF_DEPRECATED(type)
|
||||
#endif
|
||||
|
||||
#define DEFINE_LHASH_OF_EX(type) \
|
||||
LHASH_OF(type) \
|
||||
{ \
|
||||
union lh_##type##_dummy { \
|
||||
void *d1; \
|
||||
unsigned long d2; \
|
||||
int d3; \
|
||||
} dummy; \
|
||||
}; \
|
||||
static unsigned long \
|
||||
lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \
|
||||
{ \
|
||||
unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \
|
||||
return hfn_conv((const type *)data); \
|
||||
} \
|
||||
static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \
|
||||
{ \
|
||||
int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \
|
||||
return cfn_conv((const type *)da, (const type *)db); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_free(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
OPENSSL_LH_free((OPENSSL_LHASH *)lh); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_flush(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \
|
||||
} \
|
||||
static ossl_unused ossl_inline type * \
|
||||
lh_##type##_insert(LHASH_OF(type) *lh, type *d) \
|
||||
{ \
|
||||
return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \
|
||||
} \
|
||||
static ossl_unused ossl_inline type * \
|
||||
lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \
|
||||
{ \
|
||||
return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \
|
||||
} \
|
||||
static ossl_unused ossl_inline type * \
|
||||
lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \
|
||||
{ \
|
||||
return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int \
|
||||
lh_##type##_error(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \
|
||||
} \
|
||||
static ossl_unused ossl_inline unsigned long \
|
||||
lh_##type##_num_items(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \
|
||||
} \
|
||||
static ossl_unused ossl_inline unsigned long \
|
||||
lh_##type##_get_down_load(LHASH_OF(type) *lh) \
|
||||
{ \
|
||||
return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \
|
||||
{ \
|
||||
OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \
|
||||
{ \
|
||||
void (*doall_conv)(type *) = (void (*)(type *))doall; \
|
||||
doall_conv((type *)node); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \
|
||||
{ \
|
||||
void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \
|
||||
doall_conv((type *)node, arg); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \
|
||||
{ \
|
||||
OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \
|
||||
} \
|
||||
static ossl_unused ossl_inline LHASH_OF(type) * \
|
||||
lh_##type##_new(unsigned long (*hfn)(const type *), \
|
||||
int (*cfn)(const type *, const type *)) \
|
||||
{ \
|
||||
return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \
|
||||
lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \
|
||||
lh_##type##_doall_thunk, \
|
||||
lh_##type##_doall_arg_thunk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall_arg(LHASH_OF(type) *lh, \
|
||||
void (*doallarg)(type *, void *), void *arg) \
|
||||
{ \
|
||||
OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \
|
||||
(OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \
|
||||
} \
|
||||
LHASH_OF(type)
|
||||
|
||||
#define DEFINE_LHASH_OF(type) \
|
||||
DEFINE_LHASH_OF_EX(type); \
|
||||
DEFINE_LHASH_OF_DEPRECATED(type) \
|
||||
LHASH_OF(type)
|
||||
|
||||
#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \
|
||||
int_implement_lhash_doall(type, argtype, const type)
|
||||
|
||||
#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \
|
||||
int_implement_lhash_doall(type, argtype, type)
|
||||
|
||||
#define int_implement_lhash_doall(type, argtype, cbargtype) \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \
|
||||
{ \
|
||||
void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \
|
||||
fn_conv((cbargtype *)node, (argtype *)arg); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void \
|
||||
lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \
|
||||
void (*fn)(cbargtype *, argtype *), \
|
||||
argtype *arg) \
|
||||
{ \
|
||||
OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \
|
||||
lh_##type##_doall_##argtype##_thunk, \
|
||||
(OPENSSL_LH_DOALL_FUNCARG)fn, \
|
||||
(void *)arg); \
|
||||
} \
|
||||
LHASH_OF(type)
|
||||
|
||||
/* clang-format off */
|
||||
DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING);
|
||||
#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk))
|
||||
#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh))
|
||||
#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh))
|
||||
#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh))
|
||||
#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh))
|
||||
#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh))
|
||||
#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl)
|
||||
#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn))
|
||||
DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING);
|
||||
#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk))
|
||||
#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh))
|
||||
#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh))
|
||||
#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr)))
|
||||
#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh))
|
||||
#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh))
|
||||
#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out)
|
||||
#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh))
|
||||
#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl)
|
||||
#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,487 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/ocsp.h.in
|
||||
*
|
||||
* Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_OCSP_H
|
||||
#define OPENSSL_OCSP_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_OCSP_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
#include <openssl/http.h>
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
/*
|
||||
* These definitions are outside the OPENSSL_NO_OCSP guard because although for
|
||||
* historical reasons they have OCSP_* names, they can actually be used
|
||||
* independently of OCSP. E.g. see RFC5280
|
||||
*/
|
||||
/*-
|
||||
* CRLReason ::= ENUMERATED {
|
||||
* unspecified (0),
|
||||
* keyCompromise (1),
|
||||
* cACompromise (2),
|
||||
* affiliationChanged (3),
|
||||
* superseded (4),
|
||||
* cessationOfOperation (5),
|
||||
* certificateHold (6),
|
||||
* -- value 7 is not used
|
||||
* removeFromCRL (8),
|
||||
* privilegeWithdrawn (9),
|
||||
* aACompromise (10) }
|
||||
*/
|
||||
#define OCSP_REVOKED_STATUS_NOSTATUS -1
|
||||
#define OCSP_REVOKED_STATUS_UNSPECIFIED 0
|
||||
#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1
|
||||
#define OCSP_REVOKED_STATUS_CACOMPROMISE 2
|
||||
#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3
|
||||
#define OCSP_REVOKED_STATUS_SUPERSEDED 4
|
||||
#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5
|
||||
#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6
|
||||
#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8
|
||||
#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9
|
||||
#define OCSP_REVOKED_STATUS_AACOMPROMISE 10
|
||||
|
||||
#ifndef OPENSSL_NO_OCSP
|
||||
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/ocsperr.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Various flags and values */
|
||||
|
||||
#define OCSP_DEFAULT_NONCE_LENGTH 16
|
||||
|
||||
#define OCSP_NOCERTS 0x1
|
||||
#define OCSP_NOINTERN 0x2
|
||||
#define OCSP_NOSIGS 0x4
|
||||
#define OCSP_NOCHAIN 0x8
|
||||
#define OCSP_NOVERIFY 0x10
|
||||
#define OCSP_NOEXPLICIT 0x20
|
||||
#define OCSP_NOCASIGN 0x40
|
||||
#define OCSP_NODELEGATED 0x80
|
||||
#define OCSP_NOCHECKS 0x100
|
||||
#define OCSP_TRUSTOTHER 0x200
|
||||
#define OCSP_RESPID_KEY 0x400
|
||||
#define OCSP_NOTIME 0x800
|
||||
#define OCSP_PARTIAL_CHAIN 0x1000
|
||||
|
||||
typedef struct ocsp_cert_id_st OCSP_CERTID;
|
||||
typedef struct ocsp_one_request_st OCSP_ONEREQ;
|
||||
typedef struct ocsp_req_info_st OCSP_REQINFO;
|
||||
typedef struct ocsp_signature_st OCSP_SIGNATURE;
|
||||
typedef struct ocsp_request_st OCSP_REQUEST;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID)
|
||||
#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk))
|
||||
#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx)))
|
||||
#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp)))
|
||||
#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null())
|
||||
#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n)))
|
||||
#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n))
|
||||
#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk))
|
||||
#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk))
|
||||
#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i)))
|
||||
#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)))
|
||||
#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))
|
||||
#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))
|
||||
#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk)))
|
||||
#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk)))
|
||||
#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc))
|
||||
#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx))
|
||||
#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr)))
|
||||
#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))
|
||||
#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))
|
||||
#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum)
|
||||
#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk))
|
||||
#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk))
|
||||
#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk)))
|
||||
#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc)))
|
||||
#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ)
|
||||
#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk))
|
||||
#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx)))
|
||||
#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp)))
|
||||
#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null())
|
||||
#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n)))
|
||||
#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n))
|
||||
#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk))
|
||||
#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk))
|
||||
#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i)))
|
||||
#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)))
|
||||
#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))
|
||||
#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))
|
||||
#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk)))
|
||||
#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk)))
|
||||
#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))
|
||||
#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx))
|
||||
#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr)))
|
||||
#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))
|
||||
#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))
|
||||
#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum)
|
||||
#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk))
|
||||
#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk))
|
||||
#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk)))
|
||||
#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)))
|
||||
#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0
|
||||
#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1
|
||||
#define OCSP_RESPONSE_STATUS_INTERNALERROR 2
|
||||
#define OCSP_RESPONSE_STATUS_TRYLATER 3
|
||||
#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5
|
||||
#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6
|
||||
|
||||
typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES;
|
||||
|
||||
#define V_OCSP_RESPID_NAME 0
|
||||
#define V_OCSP_RESPID_KEY 1
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID)
|
||||
#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk))
|
||||
#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx)))
|
||||
#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp)))
|
||||
#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null())
|
||||
#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n)))
|
||||
#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n))
|
||||
#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk))
|
||||
#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk))
|
||||
#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i)))
|
||||
#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)))
|
||||
#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))
|
||||
#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))
|
||||
#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk)))
|
||||
#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk)))
|
||||
#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc))
|
||||
#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx))
|
||||
#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr)))
|
||||
#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))
|
||||
#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))
|
||||
#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum)
|
||||
#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk))
|
||||
#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk))
|
||||
#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk)))
|
||||
#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc)))
|
||||
#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO;
|
||||
|
||||
#define V_OCSP_CERTSTATUS_GOOD 0
|
||||
#define V_OCSP_CERTSTATUS_REVOKED 1
|
||||
#define V_OCSP_CERTSTATUS_UNKNOWN 2
|
||||
|
||||
typedef struct ocsp_cert_status_st OCSP_CERTSTATUS;
|
||||
typedef struct ocsp_single_response_st OCSP_SINGLERESP;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP)
|
||||
#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))
|
||||
#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx)))
|
||||
#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp)))
|
||||
#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null())
|
||||
#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n)))
|
||||
#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n))
|
||||
#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk))
|
||||
#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk))
|
||||
#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i)))
|
||||
#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)))
|
||||
#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))
|
||||
#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))
|
||||
#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk)))
|
||||
#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk)))
|
||||
#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))
|
||||
#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx))
|
||||
#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr)))
|
||||
#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))
|
||||
#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))
|
||||
#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum)
|
||||
#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk))
|
||||
#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))
|
||||
#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)))
|
||||
#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)))
|
||||
#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct ocsp_response_data_st OCSP_RESPDATA;
|
||||
|
||||
typedef struct ocsp_basic_response_st OCSP_BASICRESP;
|
||||
|
||||
typedef struct ocsp_crl_id_st OCSP_CRLID;
|
||||
typedef struct ocsp_service_locator_st OCSP_SERVICELOC;
|
||||
|
||||
#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST"
|
||||
#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE"
|
||||
|
||||
#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p)
|
||||
|
||||
#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p)
|
||||
|
||||
#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \
|
||||
(d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \
|
||||
bp, (char **)(x), cb, NULL)
|
||||
|
||||
#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \
|
||||
(d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \
|
||||
bp, (char **)(x), cb, NULL)
|
||||
|
||||
#define PEM_write_bio_OCSP_REQUEST(bp, o) \
|
||||
PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \
|
||||
bp, (char *)(o), NULL, NULL, 0, NULL, NULL)
|
||||
|
||||
#define PEM_write_bio_OCSP_RESPONSE(bp, o) \
|
||||
PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \
|
||||
bp, (char *)(o), NULL, NULL, 0, NULL, NULL)
|
||||
|
||||
#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o)
|
||||
|
||||
#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o)
|
||||
|
||||
#define ASN1_BIT_STRING_digest(data, type, md, len) \
|
||||
ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len)
|
||||
|
||||
#define OCSP_CERTSTATUS_dup(cs) \
|
||||
(OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \
|
||||
(d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs))
|
||||
|
||||
DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID)
|
||||
|
||||
OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path,
|
||||
const OCSP_REQUEST *req, int buf_size);
|
||||
OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req);
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX;
|
||||
#define OCSP_REQ_CTX_new(io, buf_size) \
|
||||
OSSL_HTTP_REQ_CTX_new(io, io, buf_size)
|
||||
#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free
|
||||
#define OCSP_REQ_CTX_http(rctx, op, path) \
|
||||
(OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path))
|
||||
#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header
|
||||
#define OCSP_REQ_CTX_i2d(r, it, req) \
|
||||
OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req)
|
||||
#define OCSP_REQ_CTX_set1_req(r, req) \
|
||||
OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req))
|
||||
#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio
|
||||
#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i
|
||||
#define OCSP_sendreq_nbio(p, r) \
|
||||
OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \
|
||||
ASN1_ITEM_rptr(OCSP_RESPONSE))
|
||||
#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio
|
||||
#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length
|
||||
#endif
|
||||
|
||||
OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject,
|
||||
const X509 *issuer);
|
||||
|
||||
OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst,
|
||||
const X509_NAME *issuerName,
|
||||
const ASN1_BIT_STRING *issuerKey,
|
||||
const ASN1_INTEGER *serialNumber);
|
||||
|
||||
OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid);
|
||||
|
||||
int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
|
||||
int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
|
||||
int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs);
|
||||
int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);
|
||||
|
||||
int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm);
|
||||
int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert);
|
||||
|
||||
int OCSP_request_sign(OCSP_REQUEST *req,
|
||||
X509 *signer,
|
||||
EVP_PKEY *key,
|
||||
const EVP_MD *dgst,
|
||||
STACK_OF(X509) *certs, unsigned long flags);
|
||||
|
||||
int OCSP_response_status(OCSP_RESPONSE *resp);
|
||||
OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp);
|
||||
|
||||
const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs);
|
||||
const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs);
|
||||
const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs);
|
||||
int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer,
|
||||
STACK_OF(X509) *extra_certs);
|
||||
|
||||
int OCSP_resp_count(OCSP_BASICRESP *bs);
|
||||
OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
|
||||
const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs);
|
||||
const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs);
|
||||
int OCSP_resp_get0_id(const OCSP_BASICRESP *bs,
|
||||
const ASN1_OCTET_STRING **pid,
|
||||
const X509_NAME **pname);
|
||||
int OCSP_resp_get1_id(const OCSP_BASICRESP *bs,
|
||||
ASN1_OCTET_STRING **pid,
|
||||
X509_NAME **pname);
|
||||
|
||||
int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
|
||||
int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
|
||||
ASN1_GENERALIZEDTIME **revtime,
|
||||
ASN1_GENERALIZEDTIME **thisupd,
|
||||
ASN1_GENERALIZEDTIME **nextupd);
|
||||
int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
|
||||
int *reason,
|
||||
ASN1_GENERALIZEDTIME **revtime,
|
||||
ASN1_GENERALIZEDTIME **thisupd,
|
||||
ASN1_GENERALIZEDTIME **nextupd);
|
||||
int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
|
||||
ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec);
|
||||
|
||||
int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs,
|
||||
X509_STORE *store, unsigned long flags);
|
||||
|
||||
#define OCSP_parse_url(url, host, port, path, ssl) \
|
||||
OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL)
|
||||
|
||||
int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b);
|
||||
int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b);
|
||||
|
||||
int OCSP_request_onereq_count(OCSP_REQUEST *req);
|
||||
OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i);
|
||||
OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one);
|
||||
int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd,
|
||||
ASN1_OCTET_STRING **pikeyHash,
|
||||
ASN1_INTEGER **pserial, OCSP_CERTID *cid);
|
||||
int OCSP_request_is_signed(OCSP_REQUEST *req);
|
||||
OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs);
|
||||
OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp,
|
||||
OCSP_CERTID *cid,
|
||||
int status, int reason,
|
||||
ASN1_TIME *revtime,
|
||||
ASN1_TIME *thisupd,
|
||||
ASN1_TIME *nextupd);
|
||||
int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert);
|
||||
int OCSP_basic_sign(OCSP_BASICRESP *brsp,
|
||||
X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
|
||||
STACK_OF(X509) *certs, unsigned long flags);
|
||||
int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp,
|
||||
X509 *signer, EVP_MD_CTX *ctx,
|
||||
STACK_OF(X509) *certs, unsigned long flags);
|
||||
int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert);
|
||||
int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert);
|
||||
int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert);
|
||||
|
||||
X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim);
|
||||
|
||||
X509_EXTENSION *OCSP_accept_responses_new(char **oids);
|
||||
|
||||
X509_EXTENSION *OCSP_archive_cutoff_new(char *tim);
|
||||
|
||||
X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls);
|
||||
|
||||
int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x);
|
||||
int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos);
|
||||
int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos);
|
||||
X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc);
|
||||
X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc);
|
||||
void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit,
|
||||
int *idx);
|
||||
int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit,
|
||||
unsigned long flags);
|
||||
int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc);
|
||||
|
||||
int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x);
|
||||
int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos);
|
||||
int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos);
|
||||
int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos);
|
||||
X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc);
|
||||
X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc);
|
||||
void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx);
|
||||
int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit,
|
||||
unsigned long flags);
|
||||
int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc);
|
||||
|
||||
int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x);
|
||||
int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos);
|
||||
int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit,
|
||||
int lastpos);
|
||||
X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc);
|
||||
X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc);
|
||||
void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit,
|
||||
int *idx);
|
||||
int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value,
|
||||
int crit, unsigned long flags);
|
||||
int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc);
|
||||
|
||||
int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x);
|
||||
int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos);
|
||||
int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit,
|
||||
int lastpos);
|
||||
X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc);
|
||||
X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc);
|
||||
void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit,
|
||||
int *idx);
|
||||
int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value,
|
||||
int crit, unsigned long flags);
|
||||
int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc);
|
||||
const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_CERTID)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_CRLID)
|
||||
DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC)
|
||||
|
||||
const char *OCSP_response_status_str(long s);
|
||||
const char *OCSP_cert_status_str(long s);
|
||||
const char *OCSP_crl_reason_str(long s);
|
||||
|
||||
int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags);
|
||||
int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags);
|
||||
|
||||
int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
|
||||
X509_STORE *st, unsigned long flags);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !defined(OPENSSL_NO_OCSP) */
|
||||
#endif
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/opensslv.h.in
|
||||
*
|
||||
* Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_OPENSSLV_H
|
||||
#define OPENSSL_OPENSSLV_H
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SECTION 1: VERSION DATA. These will change for each release
|
||||
*/
|
||||
|
||||
/*
|
||||
* Base version macros
|
||||
*
|
||||
* These macros express version number MAJOR.MINOR.PATCH exactly
|
||||
*/
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_MAJOR 3
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_MINOR 5
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_PATCH 7
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* Additional version information
|
||||
*
|
||||
* These are also part of the new version scheme, but aren't part
|
||||
* of the version number itself.
|
||||
*/
|
||||
|
||||
/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_PRE_RELEASE ""
|
||||
/* clang-format on */
|
||||
/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */
|
||||
/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_BUILD_METADATA ""
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA
|
||||
* to be anything but the empty string. Its use is entirely reserved for
|
||||
* others
|
||||
*/
|
||||
|
||||
/*
|
||||
* Shared library version
|
||||
*
|
||||
* This is strictly to express ABI version, which may or may not
|
||||
* be related to the API version expressed with the macros above.
|
||||
* This is defined in free form.
|
||||
*/
|
||||
/* clang-format off */
|
||||
# define OPENSSL_SHLIB_VERSION 3
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* SECTION 2: USEFUL MACROS
|
||||
*/
|
||||
|
||||
/* For checking general API compatibility when preprocessing */
|
||||
#define OPENSSL_VERSION_PREREQ(maj, min) \
|
||||
((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min))
|
||||
|
||||
/*
|
||||
* Macros to get the version in easily digested string form, both the short
|
||||
* "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced
|
||||
* with the values from the corresponding OPENSSL_VERSION_ macros) and the
|
||||
* longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
|
||||
* OPENSSL_VERSION_BUILD_METADATA_STR appended.
|
||||
*/
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_STR "3.5.7"
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# define OPENSSL_FULL_VERSION_STR "3.5.7"
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* SECTION 3: ADDITIONAL METADATA
|
||||
*
|
||||
* These strings are defined separately to allow them to be parsable.
|
||||
*/
|
||||
/* clang-format off */
|
||||
# define OPENSSL_RELEASE_DATE "9 Jun 2026"
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* SECTION 4: BACKWARD COMPATIBILITY
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026"
|
||||
/* clang-format on */
|
||||
|
||||
/* clang-format off */
|
||||
/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */
|
||||
# define OPENSSL_VERSION_NUMBER \
|
||||
( (OPENSSL_VERSION_MAJOR<<28) \
|
||||
|(OPENSSL_VERSION_MINOR<<20) \
|
||||
|(OPENSSL_VERSION_PATCH<<4) \
|
||||
|0x0L )
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_OPENSSLV_H
|
||||
#endif
|
||||
|
||||
#endif /* OPENSSL_OPENSSLV_H */
|
||||
@@ -0,0 +1,370 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/pkcs12.h.in
|
||||
*
|
||||
* Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_PKCS12_H
|
||||
#define OPENSSL_PKCS12_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_PKCS12_H
|
||||
#endif
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/core.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/pkcs12err.h>
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PKCS12_KEY_ID 1
|
||||
#define PKCS12_IV_ID 2
|
||||
#define PKCS12_MAC_ID 3
|
||||
|
||||
/* Default iteration count */
|
||||
#ifndef PKCS12_DEFAULT_ITER
|
||||
#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER
|
||||
#endif
|
||||
|
||||
#define PKCS12_MAC_KEY_LENGTH 20
|
||||
|
||||
/* The macro is expected to be used only internally. Kept for backwards compatibility. */
|
||||
#define PKCS12_SALT_LEN 8
|
||||
|
||||
/* It's not clear if these are actually needed... */
|
||||
#define PKCS12_key_gen PKCS12_key_gen_utf8
|
||||
#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8
|
||||
|
||||
/* MS key usage constants */
|
||||
|
||||
#define KEY_EX 0x10
|
||||
#define KEY_SIG 0x80
|
||||
|
||||
typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA;
|
||||
|
||||
typedef struct PKCS12_st PKCS12;
|
||||
|
||||
typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG)
|
||||
#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))
|
||||
#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx)))
|
||||
#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp)))
|
||||
#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null())
|
||||
#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n)))
|
||||
#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n))
|
||||
#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk))
|
||||
#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk))
|
||||
#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i)))
|
||||
#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)))
|
||||
#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))
|
||||
#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))
|
||||
#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk)))
|
||||
#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk)))
|
||||
#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))
|
||||
#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx))
|
||||
#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr)))
|
||||
#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))
|
||||
#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))
|
||||
#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum)
|
||||
#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk))
|
||||
#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))
|
||||
#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)))
|
||||
#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)))
|
||||
#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct pkcs12_bag_st PKCS12_BAGS;
|
||||
|
||||
#define PKCS12_ERROR 0
|
||||
#define PKCS12_OK 1
|
||||
|
||||
/* Compatibility macros */
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
|
||||
#define M_PKCS12_bag_type PKCS12_bag_type
|
||||
#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type
|
||||
#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type
|
||||
|
||||
#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert
|
||||
#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl
|
||||
#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid
|
||||
#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid
|
||||
#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert
|
||||
#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl
|
||||
#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf
|
||||
#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt
|
||||
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag,
|
||||
int attr_nid);
|
||||
#endif
|
||||
|
||||
ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid);
|
||||
int PKCS12_mac_present(const PKCS12 *p12);
|
||||
void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac,
|
||||
const X509_ALGOR **pmacalg,
|
||||
const ASN1_OCTET_STRING **psalt,
|
||||
const ASN1_INTEGER **piter,
|
||||
const PKCS12 *p12);
|
||||
|
||||
const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag,
|
||||
int attr_nid);
|
||||
const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag);
|
||||
int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag);
|
||||
int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag);
|
||||
const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag);
|
||||
const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag);
|
||||
|
||||
X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq);
|
||||
X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag);
|
||||
X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq);
|
||||
X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag);
|
||||
const STACK_OF(PKCS12_SAFEBAG) *
|
||||
PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag);
|
||||
const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag);
|
||||
const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag);
|
||||
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid,
|
||||
const char *pass,
|
||||
int passlen,
|
||||
unsigned char *salt,
|
||||
int saltlen, int iter,
|
||||
PKCS8_PRIV_KEY_INFO *p8inf);
|
||||
PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid,
|
||||
const char *pass,
|
||||
int passlen,
|
||||
unsigned char *salt,
|
||||
int saltlen, int iter,
|
||||
PKCS8_PRIV_KEY_INFO *p8inf,
|
||||
OSSL_LIB_CTX *ctx,
|
||||
const char *propq);
|
||||
|
||||
PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it,
|
||||
int nid1, int nid2);
|
||||
PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass,
|
||||
int passlen);
|
||||
PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass,
|
||||
int passlen, OSSL_LIB_CTX *ctx,
|
||||
const char *propq);
|
||||
PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag,
|
||||
const char *pass, int passlen);
|
||||
PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag,
|
||||
const char *pass, int passlen,
|
||||
OSSL_LIB_CTX *ctx,
|
||||
const char *propq);
|
||||
X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher,
|
||||
const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8);
|
||||
X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher,
|
||||
const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen,
|
||||
PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe);
|
||||
X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen,
|
||||
PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk);
|
||||
STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7);
|
||||
PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen,
|
||||
unsigned char *salt, int saltlen, int iter,
|
||||
STACK_OF(PKCS12_SAFEBAG) *bags);
|
||||
PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen,
|
||||
unsigned char *salt, int saltlen, int iter,
|
||||
STACK_OF(PKCS12_SAFEBAG) *bags,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass,
|
||||
int passlen);
|
||||
|
||||
int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes);
|
||||
STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12);
|
||||
|
||||
int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name,
|
||||
int namelen);
|
||||
int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name,
|
||||
int namelen);
|
||||
int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name,
|
||||
int namelen);
|
||||
int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name,
|
||||
int namelen);
|
||||
int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag,
|
||||
const unsigned char *name, int namelen);
|
||||
int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage);
|
||||
ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs,
|
||||
int attr_nid);
|
||||
char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag);
|
||||
const STACK_OF(X509_ATTRIBUTE) *
|
||||
PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag);
|
||||
void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs);
|
||||
unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor,
|
||||
const char *pass, int passlen,
|
||||
const unsigned char *in, int inlen,
|
||||
unsigned char **data, int *datalen,
|
||||
int en_de);
|
||||
unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor,
|
||||
const char *pass, int passlen,
|
||||
const unsigned char *in, int inlen,
|
||||
unsigned char **data, int *datalen,
|
||||
int en_de, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it,
|
||||
const char *pass, int passlen,
|
||||
const ASN1_OCTET_STRING *oct, int zbuf);
|
||||
void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it,
|
||||
const char *pass, int passlen,
|
||||
const ASN1_OCTET_STRING *oct, int zbuf,
|
||||
OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor,
|
||||
const ASN1_ITEM *it,
|
||||
const char *pass, int passlen,
|
||||
void *obj, int zbuf);
|
||||
ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor,
|
||||
const ASN1_ITEM *it,
|
||||
const char *pass, int passlen,
|
||||
void *obj, int zbuf,
|
||||
OSSL_LIB_CTX *ctx,
|
||||
const char *propq);
|
||||
PKCS12 *PKCS12_init(int mode);
|
||||
PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type);
|
||||
int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type);
|
||||
int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type);
|
||||
int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt,
|
||||
int saltlen, int id, int iter, int n,
|
||||
unsigned char *out, const EVP_MD *md_type,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
|
||||
ASN1_TYPE *param, const EVP_CIPHER *cipher,
|
||||
const EVP_MD *md_type, int en_de);
|
||||
int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
|
||||
ASN1_TYPE *param, const EVP_CIPHER *cipher,
|
||||
const EVP_MD *md_type, int en_de,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
|
||||
unsigned char *mac, unsigned int *maclen);
|
||||
int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen);
|
||||
int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen,
|
||||
unsigned char *salt, int saltlen, int iter,
|
||||
const EVP_MD *md_type);
|
||||
int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen,
|
||||
unsigned char *salt, int saltlen, int iter,
|
||||
const EVP_MD *md_type, const char *prf_md_name);
|
||||
int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt,
|
||||
int saltlen, const EVP_MD *md_type);
|
||||
unsigned char *OPENSSL_asc2uni(const char *asc, int asclen,
|
||||
unsigned char **uni, int *unilen);
|
||||
char *OPENSSL_uni2asc(const unsigned char *uni, int unilen);
|
||||
unsigned char *OPENSSL_utf82uni(const char *asc, int asclen,
|
||||
unsigned char **uni, int *unilen);
|
||||
char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS12)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS)
|
||||
|
||||
DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS)
|
||||
DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES)
|
||||
|
||||
void PKCS12_PBE_add(void);
|
||||
int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
|
||||
STACK_OF(X509) **ca);
|
||||
typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg);
|
||||
PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey,
|
||||
X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert,
|
||||
int iter, int mac_iter, int keytype);
|
||||
PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey,
|
||||
X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert,
|
||||
int iter, int mac_iter, int keytype,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey,
|
||||
X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert,
|
||||
int iter, int mac_iter, int keytype,
|
||||
OSSL_LIB_CTX *ctx, const char *propq,
|
||||
PKCS12_create_cb *cb, void *cbarg);
|
||||
|
||||
PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert);
|
||||
PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
|
||||
EVP_PKEY *key, int key_usage, int iter,
|
||||
int key_nid, const char *pass);
|
||||
PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags,
|
||||
EVP_PKEY *key, int key_usage, int iter,
|
||||
int key_nid, const char *pass,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags,
|
||||
int nid_type, const unsigned char *value, int len);
|
||||
int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
|
||||
int safe_nid, int iter, const char *pass);
|
||||
int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
|
||||
int safe_nid, int iter, const char *pass,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid);
|
||||
PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid,
|
||||
OSSL_LIB_CTX *ctx, const char *propq);
|
||||
|
||||
int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12);
|
||||
#endif
|
||||
PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
|
||||
#endif
|
||||
int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,435 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/pkcs7.h.in
|
||||
*
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_PKCS7_H
|
||||
#define OPENSSL_PKCS7_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_PKCS7_H
|
||||
#endif
|
||||
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/e_os2.h>
|
||||
|
||||
#include <openssl/symhacks.h>
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/pkcs7err.h>
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-
|
||||
Encryption_ID DES-CBC
|
||||
Digest_ID MD5
|
||||
Digest_Encryption_ID rsaEncryption
|
||||
Key_Encryption_ID rsaEncryption
|
||||
*/
|
||||
|
||||
typedef struct PKCS7_CTX_st {
|
||||
OSSL_LIB_CTX *libctx;
|
||||
char *propq;
|
||||
} PKCS7_CTX;
|
||||
|
||||
typedef struct pkcs7_issuer_and_serial_st {
|
||||
X509_NAME *issuer;
|
||||
ASN1_INTEGER *serial;
|
||||
} PKCS7_ISSUER_AND_SERIAL;
|
||||
|
||||
typedef struct pkcs7_signer_info_st {
|
||||
ASN1_INTEGER *version; /* version 1 */
|
||||
PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
|
||||
X509_ALGOR *digest_alg;
|
||||
STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */
|
||||
X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */
|
||||
ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */
|
||||
STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */
|
||||
/* The private key to sign with */
|
||||
EVP_PKEY *pkey;
|
||||
const PKCS7_CTX *ctx;
|
||||
} PKCS7_SIGNER_INFO;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO)
|
||||
#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx)))
|
||||
#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp)))
|
||||
#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null())
|
||||
#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n)))
|
||||
#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n))
|
||||
#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i)))
|
||||
#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)))
|
||||
#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))
|
||||
#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))
|
||||
#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))
|
||||
#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx))
|
||||
#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr)))
|
||||
#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))
|
||||
#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))
|
||||
#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum)
|
||||
#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)))
|
||||
#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct pkcs7_recip_info_st {
|
||||
ASN1_INTEGER *version; /* version 0 */
|
||||
PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
|
||||
X509_ALGOR *key_enc_algor;
|
||||
ASN1_OCTET_STRING *enc_key;
|
||||
X509 *cert; /* get the pub-key from this */
|
||||
const PKCS7_CTX *ctx;
|
||||
} PKCS7_RECIP_INFO;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO)
|
||||
#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx)))
|
||||
#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp)))
|
||||
#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null())
|
||||
#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n)))
|
||||
#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n))
|
||||
#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i)))
|
||||
#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)))
|
||||
#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))
|
||||
#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))
|
||||
#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))
|
||||
#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx))
|
||||
#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr)))
|
||||
#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))
|
||||
#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))
|
||||
#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum)
|
||||
#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))
|
||||
#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)))
|
||||
#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)))
|
||||
#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct pkcs7_signed_st {
|
||||
ASN1_INTEGER *version; /* version 1 */
|
||||
STACK_OF(X509_ALGOR) *md_algs; /* md used */
|
||||
STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */
|
||||
STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */
|
||||
STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
|
||||
struct pkcs7_st *contents;
|
||||
} PKCS7_SIGNED;
|
||||
/*
|
||||
* The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about
|
||||
* merging the two
|
||||
*/
|
||||
|
||||
typedef struct pkcs7_enc_content_st {
|
||||
ASN1_OBJECT *content_type;
|
||||
X509_ALGOR *algorithm;
|
||||
ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
|
||||
const EVP_CIPHER *cipher;
|
||||
const PKCS7_CTX *ctx;
|
||||
} PKCS7_ENC_CONTENT;
|
||||
|
||||
typedef struct pkcs7_enveloped_st {
|
||||
ASN1_INTEGER *version; /* version 0 */
|
||||
STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
|
||||
PKCS7_ENC_CONTENT *enc_data;
|
||||
} PKCS7_ENVELOPE;
|
||||
|
||||
typedef struct pkcs7_signedandenveloped_st {
|
||||
ASN1_INTEGER *version; /* version 1 */
|
||||
STACK_OF(X509_ALGOR) *md_algs; /* md used */
|
||||
STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */
|
||||
STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */
|
||||
STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
|
||||
PKCS7_ENC_CONTENT *enc_data;
|
||||
STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
|
||||
} PKCS7_SIGN_ENVELOPE;
|
||||
|
||||
typedef struct pkcs7_digest_st {
|
||||
ASN1_INTEGER *version; /* version 0 */
|
||||
X509_ALGOR *md; /* md used */
|
||||
struct pkcs7_st *contents;
|
||||
ASN1_OCTET_STRING *digest;
|
||||
} PKCS7_DIGEST;
|
||||
|
||||
typedef struct pkcs7_encrypted_st {
|
||||
ASN1_INTEGER *version; /* version 0 */
|
||||
PKCS7_ENC_CONTENT *enc_data;
|
||||
} PKCS7_ENCRYPT;
|
||||
|
||||
typedef struct pkcs7_st {
|
||||
/*
|
||||
* The following is non NULL if it contains ASN1 encoding of this
|
||||
* structure
|
||||
*/
|
||||
unsigned char *asn1;
|
||||
long length;
|
||||
#define PKCS7_S_HEADER 0
|
||||
#define PKCS7_S_BODY 1
|
||||
#define PKCS7_S_TAIL 2
|
||||
int state; /* used during processing */
|
||||
int detached;
|
||||
ASN1_OBJECT *type;
|
||||
/* content as defined by the type */
|
||||
/*
|
||||
* all encryption/message digests are applied to the 'contents', leaving
|
||||
* out the 'type' field.
|
||||
*/
|
||||
union {
|
||||
char *ptr;
|
||||
/* NID_pkcs7_data */
|
||||
ASN1_OCTET_STRING *data;
|
||||
/* NID_pkcs7_signed */
|
||||
PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */
|
||||
/* NID_pkcs7_enveloped */
|
||||
PKCS7_ENVELOPE *enveloped;
|
||||
/* NID_pkcs7_signedAndEnveloped */
|
||||
PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
|
||||
/* NID_pkcs7_digest */
|
||||
PKCS7_DIGEST *digest;
|
||||
/* NID_pkcs7_encrypted */
|
||||
PKCS7_ENCRYPT *encrypted;
|
||||
/* Anything else */
|
||||
ASN1_TYPE *other;
|
||||
} d;
|
||||
PKCS7_CTX ctx;
|
||||
} PKCS7;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7)
|
||||
#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk))
|
||||
#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx)))
|
||||
#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp)))
|
||||
#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null())
|
||||
#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n)))
|
||||
#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n))
|
||||
#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk))
|
||||
#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk))
|
||||
#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i)))
|
||||
#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)))
|
||||
#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))
|
||||
#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))
|
||||
#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk)))
|
||||
#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk)))
|
||||
#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc))
|
||||
#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx))
|
||||
#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr)))
|
||||
#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))
|
||||
#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))
|
||||
#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum)
|
||||
#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk))
|
||||
#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk))
|
||||
#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk)))
|
||||
#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc)))
|
||||
#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#define PKCS7_OP_SET_DETACHED_SIGNATURE 1
|
||||
#define PKCS7_OP_GET_DETACHED_SIGNATURE 2
|
||||
|
||||
#define PKCS7_get_signed_attributes(si) ((si)->auth_attr)
|
||||
#define PKCS7_get_attributes(si) ((si)->unauth_attr)
|
||||
|
||||
#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
|
||||
#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
|
||||
#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped)
|
||||
#define PKCS7_type_is_signedAndEnveloped(a) \
|
||||
(OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
|
||||
#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
|
||||
#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
|
||||
|
||||
#define PKCS7_set_detached(p, v) \
|
||||
PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL)
|
||||
#define PKCS7_get_detached(p) \
|
||||
PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL)
|
||||
|
||||
#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))
|
||||
|
||||
/* S/MIME related flags */
|
||||
|
||||
#define PKCS7_TEXT 0x1
|
||||
#define PKCS7_NOCERTS 0x2
|
||||
#define PKCS7_NOSIGS 0x4
|
||||
#define PKCS7_NOCHAIN 0x8
|
||||
#define PKCS7_NOINTERN 0x10
|
||||
#define PKCS7_NOVERIFY 0x20
|
||||
#define PKCS7_DETACHED 0x40
|
||||
#define PKCS7_BINARY 0x80
|
||||
#define PKCS7_NOATTR 0x100
|
||||
#define PKCS7_NOSMIMECAP 0x200
|
||||
#define PKCS7_NOOLDMIMETYPE 0x400
|
||||
#define PKCS7_CRLFEOL 0x800
|
||||
#define PKCS7_STREAM 0x1000
|
||||
#define PKCS7_NOCRL 0x2000
|
||||
#define PKCS7_PARTIAL 0x4000
|
||||
#define PKCS7_REUSE_DIGEST 0x8000
|
||||
#define PKCS7_NO_DUAL_CONTENT 0x10000
|
||||
|
||||
/* Flags: for compatibility with older code */
|
||||
|
||||
#define SMIME_TEXT PKCS7_TEXT
|
||||
#define SMIME_NOCERTS PKCS7_NOCERTS
|
||||
#define SMIME_NOSIGS PKCS7_NOSIGS
|
||||
#define SMIME_NOCHAIN PKCS7_NOCHAIN
|
||||
#define SMIME_NOINTERN PKCS7_NOINTERN
|
||||
#define SMIME_NOVERIFY PKCS7_NOVERIFY
|
||||
#define SMIME_DETACHED PKCS7_DETACHED
|
||||
#define SMIME_BINARY PKCS7_BINARY
|
||||
#define SMIME_NOATTR PKCS7_NOATTR
|
||||
|
||||
/* CRLF ASCII canonicalisation */
|
||||
#define SMIME_ASCIICRLF 0x80000
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL)
|
||||
|
||||
int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
|
||||
const EVP_MD *type, unsigned char *md,
|
||||
unsigned int *len);
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
|
||||
int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7);
|
||||
#endif
|
||||
DECLARE_ASN1_DUP_FUNCTION(PKCS7)
|
||||
PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
|
||||
int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7);
|
||||
int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
|
||||
int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT)
|
||||
DECLARE_ASN1_FUNCTIONS(PKCS7)
|
||||
PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
|
||||
DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
|
||||
|
||||
DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
|
||||
DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
|
||||
|
||||
long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
|
||||
|
||||
int PKCS7_type_is_other(PKCS7 *p7);
|
||||
int PKCS7_set_type(PKCS7 *p7, int type);
|
||||
int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
|
||||
int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
|
||||
int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
|
||||
const EVP_MD *dgst);
|
||||
int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
|
||||
int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
|
||||
int PKCS7_add_certificate(PKCS7 *p7, X509 *cert);
|
||||
int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl);
|
||||
int PKCS7_content_new(PKCS7 *p7, int nid);
|
||||
int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
|
||||
BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
|
||||
int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
|
||||
X509 *signer);
|
||||
|
||||
BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
|
||||
int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
|
||||
BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
|
||||
|
||||
PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
|
||||
EVP_PKEY *pkey, const EVP_MD *dgst);
|
||||
X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
|
||||
int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
|
||||
STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
|
||||
|
||||
PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
|
||||
void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
|
||||
X509_ALGOR **pdig, X509_ALGOR **psig);
|
||||
void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
|
||||
int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
|
||||
int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
|
||||
int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
|
||||
int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
|
||||
|
||||
PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
|
||||
ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7);
|
||||
ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
|
||||
int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type,
|
||||
void *data);
|
||||
int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
|
||||
void *value);
|
||||
ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid);
|
||||
ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid);
|
||||
int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
|
||||
STACK_OF(X509_ATTRIBUTE) *sk);
|
||||
int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,
|
||||
STACK_OF(X509_ATTRIBUTE) *sk);
|
||||
|
||||
PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
|
||||
BIO *data, int flags);
|
||||
PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
|
||||
BIO *data, int flags, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
|
||||
X509 *signcert, EVP_PKEY *pkey,
|
||||
const EVP_MD *md, int flags);
|
||||
|
||||
int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
|
||||
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
|
||||
BIO *indata, BIO *out, int flags);
|
||||
STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs,
|
||||
int flags);
|
||||
PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
|
||||
int flags);
|
||||
PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in,
|
||||
const EVP_CIPHER *cipher, int flags,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data,
|
||||
int flags);
|
||||
|
||||
int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
|
||||
STACK_OF(X509_ALGOR) *cap);
|
||||
STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
|
||||
int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
|
||||
|
||||
int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
|
||||
int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
|
||||
int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
|
||||
const unsigned char *md, int mdlen);
|
||||
|
||||
int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
|
||||
PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7);
|
||||
PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
|
||||
|
||||
BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,303 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/safestack.h.in
|
||||
*
|
||||
* Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_SAFESTACK_H
|
||||
#define OPENSSL_SAFESTACK_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_SAFESTACK_H
|
||||
#endif
|
||||
|
||||
#include <openssl/stack.h>
|
||||
#include <openssl/e_os2.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define STACK_OF(type) struct stack_st_##type
|
||||
|
||||
/* Helper macro for internal use */
|
||||
#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \
|
||||
STACK_OF(t1); \
|
||||
typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \
|
||||
typedef void (*sk_##t1##_freefunc)(t3 * a); \
|
||||
typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \
|
||||
static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \
|
||||
{ \
|
||||
return ptr; \
|
||||
} \
|
||||
static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return (const OPENSSL_STACK *)sk; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return (OPENSSL_STACK *)sk; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \
|
||||
{ \
|
||||
return (OPENSSL_sk_compfunc)cmp; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \
|
||||
{ \
|
||||
return (OPENSSL_sk_copyfunc)cpy; \
|
||||
} \
|
||||
static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \
|
||||
{ \
|
||||
return (OPENSSL_sk_freefunc)fr; \
|
||||
}
|
||||
|
||||
#define SKM_DEFINE_STACK_OF(t1, t2, t3) \
|
||||
STACK_OF(t1); \
|
||||
typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \
|
||||
typedef void (*sk_##t1##_freefunc)(t3 * a); \
|
||||
typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \
|
||||
static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \
|
||||
} \
|
||||
static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \
|
||||
{ \
|
||||
return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \
|
||||
} \
|
||||
static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \
|
||||
{ \
|
||||
return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \
|
||||
} \
|
||||
static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \
|
||||
{ \
|
||||
return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \
|
||||
{ \
|
||||
return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
OPENSSL_sk_free((OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
OPENSSL_sk_zero((OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \
|
||||
(const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \
|
||||
{ \
|
||||
return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \
|
||||
{ \
|
||||
return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \
|
||||
{ \
|
||||
OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \
|
||||
{ \
|
||||
return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \
|
||||
} \
|
||||
static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \
|
||||
{ \
|
||||
return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \
|
||||
{ \
|
||||
return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \
|
||||
{ \
|
||||
return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \
|
||||
{ \
|
||||
return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \
|
||||
} \
|
||||
static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
OPENSSL_sk_sort((OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \
|
||||
{ \
|
||||
return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \
|
||||
} \
|
||||
static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \
|
||||
sk_##t1##_copyfunc copyfunc, \
|
||||
sk_##t1##_freefunc freefunc) \
|
||||
{ \
|
||||
return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \
|
||||
(OPENSSL_sk_copyfunc)copyfunc, \
|
||||
(OPENSSL_sk_freefunc)freefunc); \
|
||||
} \
|
||||
static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \
|
||||
{ \
|
||||
return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \
|
||||
}
|
||||
|
||||
#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t)
|
||||
#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t)
|
||||
#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2)
|
||||
#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \
|
||||
SKM_DEFINE_STACK_OF(t1, const t2, t2)
|
||||
|
||||
/*-
|
||||
* Strings are special: normally an lhash entry will point to a single
|
||||
* (somewhat) mutable object. In the case of strings:
|
||||
*
|
||||
* a) Instead of a single char, there is an array of chars, NUL-terminated.
|
||||
* b) The string may have be immutable.
|
||||
*
|
||||
* So, they need their own declarations. Especially important for
|
||||
* type-checking tools, such as Deputy.
|
||||
*
|
||||
* In practice, however, it appears to be hard to have a const
|
||||
* string. For now, I'm settling for dealing with the fact it is a
|
||||
* string at all.
|
||||
*/
|
||||
typedef char *OPENSSL_STRING;
|
||||
typedef const char *OPENSSL_CSTRING;
|
||||
|
||||
/*-
|
||||
* Confusingly, LHASH_OF(STRING) deals with char ** throughout, but
|
||||
* STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned
|
||||
* above, instead of a single char each entry is a NUL-terminated array of
|
||||
* chars. So, we have to implement STRING specially for STACK_OF. This is
|
||||
* dealt with in the autogenerated macros below.
|
||||
*/
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char)
|
||||
#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk))
|
||||
#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx)))
|
||||
#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp)))
|
||||
#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null())
|
||||
#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n)))
|
||||
#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n))
|
||||
#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk))
|
||||
#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk))
|
||||
#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i)))
|
||||
#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)))
|
||||
#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))
|
||||
#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))
|
||||
#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc))
|
||||
#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx))
|
||||
#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr)))
|
||||
#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))
|
||||
#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))
|
||||
#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum)
|
||||
#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk))
|
||||
#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk))
|
||||
#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)))
|
||||
#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char)
|
||||
#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))
|
||||
#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx)))
|
||||
#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp)))
|
||||
#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null())
|
||||
#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n)))
|
||||
#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n))
|
||||
#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk))
|
||||
#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk))
|
||||
#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i)))
|
||||
#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)))
|
||||
#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))
|
||||
#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))
|
||||
#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))
|
||||
#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx))
|
||||
#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr)))
|
||||
#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))
|
||||
#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))
|
||||
#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum)
|
||||
#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk))
|
||||
#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))
|
||||
#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)))
|
||||
#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)))
|
||||
#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#if !defined(OPENSSL_NO_DEPRECATED_3_0)
|
||||
/*
|
||||
* This is not used by OpenSSL. A block of bytes, NOT nul-terminated.
|
||||
* These should also be distinguished from "normal" stacks.
|
||||
*/
|
||||
typedef void *OPENSSL_BLOCK;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void)
|
||||
#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))
|
||||
#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx)))
|
||||
#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp)))
|
||||
#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null())
|
||||
#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n)))
|
||||
#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n))
|
||||
#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk))
|
||||
#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk))
|
||||
#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i)))
|
||||
#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)))
|
||||
#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))
|
||||
#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))
|
||||
#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk)))
|
||||
#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk)))
|
||||
#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))
|
||||
#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx))
|
||||
#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr)))
|
||||
#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))
|
||||
#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))
|
||||
#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum)
|
||||
#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk))
|
||||
#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))
|
||||
#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)))
|
||||
#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)))
|
||||
#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,291 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/srp.h.in
|
||||
*
|
||||
* Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright (c) 2004, EdelKey Project. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*
|
||||
* Originally written by Christophe Renou and Peter Sylvester,
|
||||
* for the EdelKey project.
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_SRP_H
|
||||
#define OPENSSL_SRP_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_SRP_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_SRP
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
typedef struct SRP_gN_cache_st {
|
||||
char *b64_bn;
|
||||
BIGNUM *bn;
|
||||
} SRP_gN_cache;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache)
|
||||
#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk))
|
||||
#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx)))
|
||||
#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp)))
|
||||
#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null())
|
||||
#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n)))
|
||||
#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n))
|
||||
#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk))
|
||||
#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk))
|
||||
#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i)))
|
||||
#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)))
|
||||
#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
|
||||
#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
|
||||
#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk)))
|
||||
#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk)))
|
||||
#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc))
|
||||
#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx))
|
||||
#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr)))
|
||||
#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
|
||||
#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
|
||||
#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum)
|
||||
#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk))
|
||||
#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk))
|
||||
#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk)))
|
||||
#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc)))
|
||||
#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct SRP_user_pwd_st {
|
||||
/* Owned by us. */
|
||||
char *id;
|
||||
BIGNUM *s;
|
||||
BIGNUM *v;
|
||||
/* Not owned by us. */
|
||||
const BIGNUM *g;
|
||||
const BIGNUM *N;
|
||||
/* Owned by us. */
|
||||
char *info;
|
||||
} SRP_user_pwd;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd)
|
||||
#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk))
|
||||
#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx)))
|
||||
#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp)))
|
||||
#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null())
|
||||
#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n)))
|
||||
#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n))
|
||||
#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk))
|
||||
#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk))
|
||||
#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i)))
|
||||
#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)))
|
||||
#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
|
||||
#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
|
||||
#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk)))
|
||||
#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk)))
|
||||
#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc))
|
||||
#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx))
|
||||
#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr)))
|
||||
#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
|
||||
#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
|
||||
#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum)
|
||||
#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk))
|
||||
#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk))
|
||||
#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk)))
|
||||
#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc)))
|
||||
#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
SRP_user_pwd *SRP_user_pwd_new(void);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void SRP_user_pwd_free(SRP_user_pwd *user_pwd);
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g,
|
||||
const BIGNUM *N);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id,
|
||||
const char *info);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v);
|
||||
|
||||
typedef struct SRP_VBASE_st {
|
||||
STACK_OF(SRP_user_pwd) *users_pwd;
|
||||
STACK_OF(SRP_gN_cache) *gN_cache;
|
||||
/* to simulate a user */
|
||||
char *seed_key;
|
||||
const BIGNUM *default_g;
|
||||
const BIGNUM *default_N;
|
||||
} SRP_VBASE;
|
||||
|
||||
/*
|
||||
* Internal structure storing N and g pair
|
||||
*/
|
||||
typedef struct SRP_gN_st {
|
||||
char *id;
|
||||
const BIGNUM *g;
|
||||
const BIGNUM *N;
|
||||
} SRP_gN;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN)
|
||||
#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk))
|
||||
#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx)))
|
||||
#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp)))
|
||||
#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null())
|
||||
#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n)))
|
||||
#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n))
|
||||
#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk))
|
||||
#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk))
|
||||
#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i)))
|
||||
#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)))
|
||||
#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
|
||||
#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
|
||||
#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk)))
|
||||
#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk)))
|
||||
#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc))
|
||||
#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx))
|
||||
#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr)))
|
||||
#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
|
||||
#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
|
||||
#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum)
|
||||
#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk))
|
||||
#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk))
|
||||
#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk)))
|
||||
#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc)))
|
||||
#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
SRP_VBASE *SRP_VBASE_new(char *seed_key);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void SRP_VBASE_free(SRP_VBASE *vb);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file);
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd);
|
||||
|
||||
/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username);
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt,
|
||||
char **verifier, const char *N, const char *g,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
char *SRP_create_verifier(const char *user, const char *pass, char **salt,
|
||||
char **verifier, const char *N, const char *g);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt,
|
||||
BIGNUM **verifier, const BIGNUM *N,
|
||||
const BIGNUM *g, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt,
|
||||
BIGNUM **verifier, const BIGNUM *N,
|
||||
const BIGNUM *g);
|
||||
|
||||
#define SRP_NO_ERROR 0
|
||||
#define SRP_ERR_VBASE_INCOMPLETE_FILE 1
|
||||
#define SRP_ERR_VBASE_BN_LIB 2
|
||||
#define SRP_ERR_OPEN_FILE 3
|
||||
#define SRP_ERR_MEMORY 4
|
||||
|
||||
#define DB_srptype 0
|
||||
#define DB_srpverifier 1
|
||||
#define DB_srpsalt 2
|
||||
#define DB_srpid 3
|
||||
#define DB_srpgN 4
|
||||
#define DB_srpinfo 5
|
||||
#undef DB_NUMBER
|
||||
#define DB_NUMBER 6
|
||||
|
||||
#define DB_SRP_INDEX 'I'
|
||||
#define DB_SRP_VALID 'V'
|
||||
#define DB_SRP_REVOKED 'R'
|
||||
#define DB_SRP_MODIF 'v'
|
||||
|
||||
/* see srp.c */
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
SRP_gN *SRP_get_default_gN(const char *id);
|
||||
|
||||
/* server side .... */
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u,
|
||||
const BIGNUM *b, const BIGNUM *N);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g,
|
||||
const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g,
|
||||
const BIGNUM *v);
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N);
|
||||
|
||||
/* client side .... */
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g,
|
||||
const BIGNUM *x, const BIGNUM *a, const BIGNUM *u,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g,
|
||||
const BIGNUM *x, const BIGNUM *a, const BIGNUM *u);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N);
|
||||
|
||||
#define SRP_MINIMAL_N 1024
|
||||
|
||||
#endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||
|
||||
/* This method ignores the configured seed and fails for an unknown user. */
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
OSSL_DEPRECATEDIN_1_1_0
|
||||
SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,409 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/ui.h.in
|
||||
*
|
||||
* Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_UI_H
|
||||
#define OPENSSL_UI_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_UI_H
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#include <openssl/crypto.h>
|
||||
#endif
|
||||
#include <openssl/safestack.h>
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/types.h>
|
||||
#include <openssl/uierr.h>
|
||||
|
||||
/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#ifdef OPENSSL_NO_UI_CONSOLE
|
||||
#define OPENSSL_NO_UI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* All the following functions return -1 or NULL on error and in some cases
|
||||
* (UI_process()) -2 if interrupted or in some other way cancelled. When
|
||||
* everything is fine, they return 0, a positive value or a non-NULL pointer,
|
||||
* all depending on their purpose.
|
||||
*/
|
||||
|
||||
/* Creators and destructor. */
|
||||
UI *UI_new(void);
|
||||
UI *UI_new_method(const UI_METHOD *method);
|
||||
void UI_free(UI *ui);
|
||||
|
||||
/*-
|
||||
The following functions are used to add strings to be printed and prompt
|
||||
strings to prompt for data. The names are UI_{add,dup}_<function>_string
|
||||
and UI_{add,dup}_input_boolean.
|
||||
|
||||
UI_{add,dup}_<function>_string have the following meanings:
|
||||
add add a text or prompt string. The pointers given to these
|
||||
functions are used verbatim, no copying is done.
|
||||
dup make a copy of the text or prompt string, then add the copy
|
||||
to the collection of strings in the user interface.
|
||||
<function>
|
||||
The function is a name for the functionality that the given
|
||||
string shall be used for. It can be one of:
|
||||
input use the string as data prompt.
|
||||
verify use the string as verification prompt. This
|
||||
is used to verify a previous input.
|
||||
info use the string for informational output.
|
||||
error use the string for error output.
|
||||
Honestly, there's currently no difference between info and error for the
|
||||
moment.
|
||||
|
||||
UI_{add,dup}_input_boolean have the same semantics for "add" and "dup",
|
||||
and are typically used when one wants to prompt for a yes/no response.
|
||||
|
||||
All of the functions in this group take a UI and a prompt string.
|
||||
The string input and verify addition functions also take a flag argument,
|
||||
a buffer for the result to end up with, a minimum input size and a maximum
|
||||
input size (the result buffer MUST be large enough to be able to contain
|
||||
the maximum number of characters). Additionally, the verify addition
|
||||
functions takes another buffer to compare the result against.
|
||||
The boolean input functions take an action description string (which should
|
||||
be safe to ignore if the expected user action is obvious, for example with
|
||||
a dialog box with an OK button and a Cancel button), a string of acceptable
|
||||
characters to mean OK and to mean Cancel. The two last strings are checked
|
||||
to make sure they don't have common characters. Additionally, the same
|
||||
flag argument as for the string input is taken, as well as a result buffer.
|
||||
The result buffer is required to be at least one byte long. Depending on
|
||||
the answer, the first character from the OK or the Cancel character strings
|
||||
will be stored in the first byte of the result buffer. No NUL will be
|
||||
added, so the result is *not* a string.
|
||||
|
||||
On success, the all return an index of the added information. That index
|
||||
is useful when retrieving results with UI_get0_result(). */
|
||||
int UI_add_input_string(UI *ui, const char *prompt, int flags,
|
||||
char *result_buf, int minsize, int maxsize);
|
||||
int UI_dup_input_string(UI *ui, const char *prompt, int flags,
|
||||
char *result_buf, int minsize, int maxsize);
|
||||
int UI_add_verify_string(UI *ui, const char *prompt, int flags,
|
||||
char *result_buf, int minsize, int maxsize,
|
||||
const char *test_buf);
|
||||
int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
|
||||
char *result_buf, int minsize, int maxsize,
|
||||
const char *test_buf);
|
||||
int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
|
||||
const char *ok_chars, const char *cancel_chars,
|
||||
int flags, char *result_buf);
|
||||
int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
|
||||
const char *ok_chars, const char *cancel_chars,
|
||||
int flags, char *result_buf);
|
||||
int UI_add_info_string(UI *ui, const char *text);
|
||||
int UI_dup_info_string(UI *ui, const char *text);
|
||||
int UI_add_error_string(UI *ui, const char *text);
|
||||
int UI_dup_error_string(UI *ui, const char *text);
|
||||
|
||||
/* These are the possible flags. They can be or'ed together. */
|
||||
/* Use to have echoing of input */
|
||||
#define UI_INPUT_FLAG_ECHO 0x01
|
||||
/*
|
||||
* Use a default password. Where that password is found is completely up to
|
||||
* the application, it might for example be in the user data set with
|
||||
* UI_add_user_data(). It is not recommended to have more than one input in
|
||||
* each UI being marked with this flag, or the application might get
|
||||
* confused.
|
||||
*/
|
||||
#define UI_INPUT_FLAG_DEFAULT_PWD 0x02
|
||||
|
||||
/*-
|
||||
* The user of these routines may want to define flags of their own. The core
|
||||
* UI won't look at those, but will pass them on to the method routines. They
|
||||
* must use higher bits so they don't get confused with the UI bits above.
|
||||
* UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good
|
||||
* example of use is this:
|
||||
*
|
||||
* #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE)
|
||||
*
|
||||
*/
|
||||
#define UI_INPUT_FLAG_USER_BASE 16
|
||||
|
||||
/*-
|
||||
* The following function helps construct a prompt.
|
||||
* phrase_desc is a textual short description of the phrase to enter,
|
||||
* for example "pass phrase", and
|
||||
* object_name is the name of the object
|
||||
* (which might be a card name or a file name) or NULL.
|
||||
* The returned string shall always be allocated on the heap with
|
||||
* OPENSSL_malloc(), and need to be free'd with OPENSSL_free().
|
||||
*
|
||||
* If the ui_method doesn't contain a pointer to a user-defined prompt
|
||||
* constructor, a default string is built, looking like this:
|
||||
*
|
||||
* "Enter {phrase_desc} for {object_name}:"
|
||||
*
|
||||
* So, if phrase_desc has the value "pass phrase" and object_name has
|
||||
* the value "foo.key", the resulting string is:
|
||||
*
|
||||
* "Enter pass phrase for foo.key:"
|
||||
*/
|
||||
char *UI_construct_prompt(UI *ui_method,
|
||||
const char *phrase_desc, const char *object_name);
|
||||
|
||||
/*
|
||||
* The following function is used to store a pointer to user-specific data.
|
||||
* Any previous such pointer will be returned and replaced.
|
||||
*
|
||||
* For callback purposes, this function makes a lot more sense than using
|
||||
* ex_data, since the latter requires that different parts of OpenSSL or
|
||||
* applications share the same ex_data index.
|
||||
*
|
||||
* Note that the UI_OpenSSL() method completely ignores the user data. Other
|
||||
* methods may not, however.
|
||||
*/
|
||||
void *UI_add_user_data(UI *ui, void *user_data);
|
||||
/*
|
||||
* Alternatively, this function is used to duplicate the user data.
|
||||
* This uses the duplicator method function. The destroy function will
|
||||
* be used to free the user data in this case.
|
||||
*/
|
||||
int UI_dup_user_data(UI *ui, void *user_data);
|
||||
/* We need a user data retrieving function as well. */
|
||||
void *UI_get0_user_data(UI *ui);
|
||||
|
||||
/* Return the result associated with a prompt given with the index i. */
|
||||
const char *UI_get0_result(UI *ui, int i);
|
||||
int UI_get_result_length(UI *ui, int i);
|
||||
|
||||
/* When all strings have been added, process the whole thing. */
|
||||
int UI_process(UI *ui);
|
||||
|
||||
/*
|
||||
* Give a user interface parameterised control commands. This can be used to
|
||||
* send down an integer, a data pointer or a function pointer, as well as be
|
||||
* used to get information from a UI.
|
||||
*/
|
||||
int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void));
|
||||
|
||||
/* The commands */
|
||||
/*
|
||||
* Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the
|
||||
* OpenSSL error stack before printing any info or added error messages and
|
||||
* before any prompting.
|
||||
*/
|
||||
#define UI_CTRL_PRINT_ERRORS 1
|
||||
/*
|
||||
* Check if a UI_process() is possible to do again with the same instance of
|
||||
* a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0
|
||||
* if not.
|
||||
*/
|
||||
#define UI_CTRL_IS_REDOABLE 2
|
||||
|
||||
/* Some methods may use extra data */
|
||||
#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg)
|
||||
#define UI_get_app_data(s) UI_get_ex_data(s, 0)
|
||||
|
||||
#define UI_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef)
|
||||
int UI_set_ex_data(UI *r, int idx, void *arg);
|
||||
void *UI_get_ex_data(const UI *r, int idx);
|
||||
|
||||
/* Use specific methods instead of the built-in one */
|
||||
void UI_set_default_method(const UI_METHOD *meth);
|
||||
const UI_METHOD *UI_get_default_method(void);
|
||||
const UI_METHOD *UI_get_method(UI *ui);
|
||||
const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
|
||||
|
||||
#ifndef OPENSSL_NO_UI_CONSOLE
|
||||
|
||||
/* The method with all the built-in thingies */
|
||||
UI_METHOD *UI_OpenSSL(void);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NULL method. Literally does nothing, but may serve as a placeholder
|
||||
* to avoid internal default.
|
||||
*/
|
||||
const UI_METHOD *UI_null(void);
|
||||
|
||||
/* ---------- For method writers ---------- */
|
||||
/*-
|
||||
A method contains a number of functions that implement the low level
|
||||
of the User Interface. The functions are:
|
||||
|
||||
an opener This function starts a session, maybe by opening
|
||||
a channel to a tty, or by opening a window.
|
||||
a writer This function is called to write a given string,
|
||||
maybe to the tty, maybe as a field label in a
|
||||
window.
|
||||
a flusher This function is called to flush everything that
|
||||
has been output so far. It can be used to actually
|
||||
display a dialog box after it has been built.
|
||||
a reader This function is called to read a given prompt,
|
||||
maybe from the tty, maybe from a field in a
|
||||
window. Note that it's called with all string
|
||||
structures, not only the prompt ones, so it must
|
||||
check such things itself.
|
||||
a closer This function closes the session, maybe by closing
|
||||
the channel to the tty, or closing the window.
|
||||
|
||||
All these functions are expected to return:
|
||||
|
||||
0 on error.
|
||||
1 on success.
|
||||
-1 on out-of-band events, for example if some prompting has
|
||||
been canceled (by pressing Ctrl-C, for example). This is
|
||||
only checked when returned by the flusher or the reader.
|
||||
|
||||
The way this is used, the opener is first called, then the writer for all
|
||||
strings, then the flusher, then the reader for all strings and finally the
|
||||
closer. Note that if you want to prompt from a terminal or other command
|
||||
line interface, the best is to have the reader also write the prompts
|
||||
instead of having the writer do it. If you want to prompt from a dialog
|
||||
box, the writer can be used to build up the contents of the box, and the
|
||||
flusher to actually display the box and run the event loop until all data
|
||||
has been given, after which the reader only grabs the given data and puts
|
||||
them back into the UI strings.
|
||||
|
||||
All method functions take a UI as argument. Additionally, the writer and
|
||||
the reader take a UI_STRING.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The UI_STRING type is the data structure that contains all the needed info
|
||||
* about a string or a prompt, including test data for a verification prompt.
|
||||
*/
|
||||
typedef struct ui_string_st UI_STRING;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING)
|
||||
#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk))
|
||||
#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx)))
|
||||
#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp)))
|
||||
#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null())
|
||||
#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n)))
|
||||
#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n))
|
||||
#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk))
|
||||
#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk))
|
||||
#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i)))
|
||||
#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)))
|
||||
#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
|
||||
#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
|
||||
#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk)))
|
||||
#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk)))
|
||||
#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc))
|
||||
#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx))
|
||||
#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr)))
|
||||
#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
|
||||
#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
|
||||
#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum)
|
||||
#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk))
|
||||
#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk))
|
||||
#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk)))
|
||||
#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc)))
|
||||
#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/*
|
||||
* The different types of strings that are currently supported. This is only
|
||||
* needed by method authors.
|
||||
*/
|
||||
enum UI_string_types {
|
||||
UIT_NONE = 0,
|
||||
UIT_PROMPT, /* Prompt for a string */
|
||||
UIT_VERIFY, /* Prompt for a string and verify */
|
||||
UIT_BOOLEAN, /* Prompt for a yes/no response */
|
||||
UIT_INFO, /* Send info to the user */
|
||||
UIT_ERROR /* Send an error message to the user */
|
||||
};
|
||||
|
||||
/* Create and manipulate methods */
|
||||
UI_METHOD *UI_create_method(const char *name);
|
||||
void UI_destroy_method(UI_METHOD *ui_method);
|
||||
int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui));
|
||||
int UI_method_set_writer(UI_METHOD *method,
|
||||
int (*writer)(UI *ui, UI_STRING *uis));
|
||||
int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui));
|
||||
int UI_method_set_reader(UI_METHOD *method,
|
||||
int (*reader)(UI *ui, UI_STRING *uis));
|
||||
int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui));
|
||||
int UI_method_set_data_duplicator(UI_METHOD *method,
|
||||
void *(*duplicator)(UI *ui, void *ui_data),
|
||||
void (*destructor)(UI *ui, void *ui_data));
|
||||
int UI_method_set_prompt_constructor(UI_METHOD *method,
|
||||
char *(*prompt_constructor)(UI *ui,
|
||||
const char
|
||||
*phrase_desc,
|
||||
const char
|
||||
*object_name));
|
||||
int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data);
|
||||
int (*UI_method_get_opener(const UI_METHOD *method))(UI *);
|
||||
int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *);
|
||||
int (*UI_method_get_flusher(const UI_METHOD *method))(UI *);
|
||||
int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *);
|
||||
int (*UI_method_get_closer(const UI_METHOD *method))(UI *);
|
||||
char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *);
|
||||
void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *);
|
||||
void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *);
|
||||
const void *UI_method_get_ex_data(const UI_METHOD *method, int idx);
|
||||
|
||||
/*
|
||||
* The following functions are helpers for method writers to access relevant
|
||||
* data from a UI_STRING.
|
||||
*/
|
||||
|
||||
/* Return type of the UI_STRING */
|
||||
enum UI_string_types UI_get_string_type(UI_STRING *uis);
|
||||
/* Return input flags of the UI_STRING */
|
||||
int UI_get_input_flags(UI_STRING *uis);
|
||||
/* Return the actual string to output (the prompt, info or error) */
|
||||
const char *UI_get0_output_string(UI_STRING *uis);
|
||||
/*
|
||||
* Return the optional action string to output (the boolean prompt
|
||||
* instruction)
|
||||
*/
|
||||
const char *UI_get0_action_string(UI_STRING *uis);
|
||||
/* Return the result of a prompt */
|
||||
const char *UI_get0_result_string(UI_STRING *uis);
|
||||
int UI_get_result_string_length(UI_STRING *uis);
|
||||
/*
|
||||
* Return the string to test the result against. Only useful with verifies.
|
||||
*/
|
||||
const char *UI_get0_test_string(UI_STRING *uis);
|
||||
/* Return the required minimum size of the result */
|
||||
int UI_get_result_minsize(UI_STRING *uis);
|
||||
/* Return the required maximum size of the result */
|
||||
int UI_get_result_maxsize(UI_STRING *uis);
|
||||
/* Set the result of a UI_STRING. */
|
||||
int UI_set_result(UI *ui, UI_STRING *uis, const char *result);
|
||||
int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len);
|
||||
|
||||
/* A couple of popular utility functions */
|
||||
int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,
|
||||
int verify);
|
||||
int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt,
|
||||
int verify);
|
||||
UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,312 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/x509_acert.h.in
|
||||
*
|
||||
* Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_X509_ACERT_H
|
||||
#define OPENSSL_X509_ACERT_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/pem.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct X509_acert_st X509_ACERT;
|
||||
typedef struct X509_acert_info_st X509_ACERT_INFO;
|
||||
typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO;
|
||||
typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL;
|
||||
typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM;
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(X509_ACERT)
|
||||
DECLARE_ASN1_DUP_FUNCTION(X509_ACERT)
|
||||
DECLARE_ASN1_ITEM(X509_ACERT_INFO)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM)
|
||||
|
||||
#ifndef OPENSSL_NO_STDIO
|
||||
X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert);
|
||||
int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert);
|
||||
#endif
|
||||
|
||||
DECLARE_PEM_rw(X509_ACERT, X509_ACERT)
|
||||
|
||||
X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert);
|
||||
int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert);
|
||||
|
||||
int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md);
|
||||
int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx);
|
||||
int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r);
|
||||
|
||||
#define X509_ACERT_VERSION_2 1
|
||||
|
||||
const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x);
|
||||
const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x);
|
||||
const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x);
|
||||
const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x);
|
||||
long X509_ACERT_get_version(const X509_ACERT *x);
|
||||
void X509_ACERT_get0_signature(const X509_ACERT *x,
|
||||
const ASN1_BIT_STRING **psig,
|
||||
const X509_ALGOR **palg);
|
||||
int X509_ACERT_get_signature_nid(const X509_ACERT *x);
|
||||
const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x);
|
||||
const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x);
|
||||
const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x);
|
||||
const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x);
|
||||
const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x);
|
||||
|
||||
int X509_ACERT_print(BIO *bp, X509_ACERT *x);
|
||||
int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags,
|
||||
unsigned long cflag);
|
||||
|
||||
int X509_ACERT_get_attr_count(const X509_ACERT *x);
|
||||
int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos);
|
||||
int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc);
|
||||
X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc);
|
||||
|
||||
void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx);
|
||||
int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit,
|
||||
unsigned long flags);
|
||||
const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x);
|
||||
|
||||
#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0
|
||||
#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1
|
||||
#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */
|
||||
int X509_ACERT_set_version(X509_ACERT *x, long version);
|
||||
void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name);
|
||||
void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss);
|
||||
void X509_ACERT_set0_holder_digest(X509_ACERT *x,
|
||||
OSSL_OBJECT_DIGEST_INFO *dinfo);
|
||||
|
||||
int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr);
|
||||
int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj,
|
||||
int type, const void *bytes, int len);
|
||||
int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type,
|
||||
const void *bytes, int len);
|
||||
int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int X509_ACERT_add_attr_nconf(CONF *conf, const char *section,
|
||||
X509_ACERT *acert);
|
||||
|
||||
int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name);
|
||||
int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial);
|
||||
int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time);
|
||||
int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time);
|
||||
|
||||
void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o,
|
||||
int *digestedObjectType,
|
||||
const X509_ALGOR **digestAlgorithm,
|
||||
const ASN1_BIT_STRING **digest);
|
||||
|
||||
int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o,
|
||||
int digestedObjectType,
|
||||
X509_ALGOR *digestAlgorithm,
|
||||
ASN1_BIT_STRING *digest);
|
||||
|
||||
const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss);
|
||||
const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss);
|
||||
const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss);
|
||||
|
||||
int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss,
|
||||
const X509_NAME *issuer);
|
||||
int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss,
|
||||
const ASN1_INTEGER *serial);
|
||||
int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss,
|
||||
const ASN1_BIT_STRING *uid);
|
||||
|
||||
#define OSSL_IETFAS_OCTETS 0
|
||||
#define OSSL_IETFAS_OID 1
|
||||
#define OSSL_IETFAS_STRING 2
|
||||
|
||||
typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE;
|
||||
typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE)
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum)
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE)
|
||||
DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE)
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX)
|
||||
|
||||
const GENERAL_NAMES *
|
||||
OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a);
|
||||
void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a,
|
||||
GENERAL_NAMES *names);
|
||||
|
||||
int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a);
|
||||
void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a,
|
||||
int ind, int *type);
|
||||
int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type,
|
||||
void *data);
|
||||
int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent);
|
||||
|
||||
struct TARGET_CERT_st {
|
||||
OSSL_ISSUER_SERIAL *targetCertificate;
|
||||
GENERAL_NAME *targetName;
|
||||
OSSL_OBJECT_DIGEST_INFO *certDigestInfo;
|
||||
};
|
||||
|
||||
typedef struct TARGET_CERT_st OSSL_TARGET_CERT;
|
||||
|
||||
#define OSSL_TGT_TARGET_NAME 0
|
||||
#define OSSL_TGT_TARGET_GROUP 1
|
||||
#define OSSL_TGT_TARGET_CERT 2
|
||||
|
||||
typedef struct TARGET_st {
|
||||
int type;
|
||||
union {
|
||||
GENERAL_NAME *targetName;
|
||||
GENERAL_NAME *targetGroup;
|
||||
OSSL_TARGET_CERT *targetCert;
|
||||
} choice;
|
||||
} OSSL_TARGET;
|
||||
|
||||
typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS;
|
||||
typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION;
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET)
|
||||
#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk))
|
||||
#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp)))
|
||||
#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n))
|
||||
#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk))
|
||||
#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk))
|
||||
#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i)))
|
||||
#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)))
|
||||
#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))
|
||||
#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))
|
||||
#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk)))
|
||||
#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk)))
|
||||
#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc))
|
||||
#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx))
|
||||
#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr)))
|
||||
#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))
|
||||
#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))
|
||||
#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum)
|
||||
#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk))
|
||||
#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk))
|
||||
#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk)))
|
||||
#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS)
|
||||
#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk))
|
||||
#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp)))
|
||||
#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n))
|
||||
#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk))
|
||||
#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk))
|
||||
#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i)))
|
||||
#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)))
|
||||
#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))
|
||||
#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))
|
||||
#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk)))
|
||||
#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk)))
|
||||
#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc))
|
||||
#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx))
|
||||
#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr)))
|
||||
#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))
|
||||
#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))
|
||||
#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum)
|
||||
#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk))
|
||||
#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk))
|
||||
#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk)))
|
||||
#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_TARGET)
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS)
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION)
|
||||
|
||||
typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX)
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL)
|
||||
#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))
|
||||
#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null())
|
||||
#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n))
|
||||
#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))
|
||||
#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))
|
||||
#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))
|
||||
#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))
|
||||
#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))
|
||||
#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx))
|
||||
#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))
|
||||
#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))
|
||||
#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum)
|
||||
#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))
|
||||
#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))
|
||||
#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)))
|
||||
#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,904 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/x509_vfy.h.in
|
||||
*
|
||||
* Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
#ifndef OPENSSL_X509_VFY_H
|
||||
#define OPENSSL_X509_VFY_H
|
||||
#pragma once
|
||||
|
||||
#include <openssl/macros.h>
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
#define HEADER_X509_VFY_H
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Protect against recursion, x509.h and x509_vfy.h each include the other.
|
||||
*/
|
||||
#ifndef OPENSSL_X509_H
|
||||
#include <openssl/x509.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
#include <openssl/lhash.h>
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/symhacks.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-
|
||||
SSL_CTX -> X509_STORE
|
||||
-> X509_LOOKUP
|
||||
->X509_LOOKUP_METHOD
|
||||
-> X509_LOOKUP
|
||||
->X509_LOOKUP_METHOD
|
||||
|
||||
SSL -> X509_STORE_CTX
|
||||
->X509_STORE
|
||||
|
||||
The X509_STORE holds the tables etc for verification stuff.
|
||||
A X509_STORE_CTX is used while validating a single certificate.
|
||||
The X509_STORE has X509_LOOKUPs for looking up certs.
|
||||
The X509_STORE then calls a function to actually verify the
|
||||
certificate chain.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
X509_LU_NONE = 0,
|
||||
X509_LU_X509,
|
||||
X509_LU_CRL
|
||||
} X509_LOOKUP_TYPE;
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define X509_LU_RETRY -1
|
||||
#define X509_LU_FAIL 0
|
||||
#endif
|
||||
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP)
|
||||
#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk))
|
||||
#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx)))
|
||||
#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp)))
|
||||
#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null())
|
||||
#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n)))
|
||||
#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n))
|
||||
#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk))
|
||||
#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk))
|
||||
#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i)))
|
||||
#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)))
|
||||
#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))
|
||||
#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))
|
||||
#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk)))
|
||||
#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk)))
|
||||
#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc))
|
||||
#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx))
|
||||
#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr)))
|
||||
#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))
|
||||
#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))
|
||||
#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum)
|
||||
#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk))
|
||||
#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk))
|
||||
#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk)))
|
||||
#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc)))
|
||||
#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT)
|
||||
#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk))
|
||||
#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx)))
|
||||
#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp)))
|
||||
#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null())
|
||||
#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n)))
|
||||
#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n))
|
||||
#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk))
|
||||
#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk))
|
||||
#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i)))
|
||||
#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)))
|
||||
#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))
|
||||
#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))
|
||||
#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk)))
|
||||
#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk)))
|
||||
#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc))
|
||||
#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx))
|
||||
#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr)))
|
||||
#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))
|
||||
#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))
|
||||
#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum)
|
||||
#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk))
|
||||
#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk))
|
||||
#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk)))
|
||||
#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc)))
|
||||
#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp)))
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM)
|
||||
#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))
|
||||
#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx)))
|
||||
#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp)))
|
||||
#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null())
|
||||
#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n)))
|
||||
#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n))
|
||||
#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk))
|
||||
#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk))
|
||||
#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i)))
|
||||
#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)))
|
||||
#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))
|
||||
#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))
|
||||
#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk)))
|
||||
#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk)))
|
||||
#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))
|
||||
#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx))
|
||||
#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr)))
|
||||
#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))
|
||||
#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))
|
||||
#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum)
|
||||
#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk))
|
||||
#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))
|
||||
#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)))
|
||||
#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)))
|
||||
#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* This is used for a table of trust checking functions */
|
||||
typedef struct x509_trust_st {
|
||||
int trust;
|
||||
int flags;
|
||||
int (*check_trust)(struct x509_trust_st *, X509 *, int);
|
||||
char *name;
|
||||
int arg1;
|
||||
void *arg2;
|
||||
} X509_TRUST;
|
||||
/* clang-format off */
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST)
|
||||
#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk))
|
||||
#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx)))
|
||||
#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp)))
|
||||
#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null())
|
||||
#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n)))
|
||||
#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n))
|
||||
#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk))
|
||||
#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk))
|
||||
#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i)))
|
||||
#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)))
|
||||
#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))
|
||||
#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))
|
||||
#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk)))
|
||||
#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk)))
|
||||
#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc))
|
||||
#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx))
|
||||
#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr)))
|
||||
#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))
|
||||
#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))
|
||||
#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum)
|
||||
#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk))
|
||||
#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk))
|
||||
#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk)))
|
||||
#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc)))
|
||||
#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp)))
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* standard trust ids */
|
||||
#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */
|
||||
#define X509_TRUST_COMPAT 1
|
||||
#define X509_TRUST_SSL_CLIENT 2
|
||||
#define X509_TRUST_SSL_SERVER 3
|
||||
#define X509_TRUST_EMAIL 4
|
||||
#define X509_TRUST_OBJECT_SIGN 5
|
||||
#define X509_TRUST_OCSP_SIGN 6
|
||||
#define X509_TRUST_OCSP_REQUEST 7
|
||||
#define X509_TRUST_TSA 8
|
||||
/* Keep these up to date! */
|
||||
#define X509_TRUST_MIN 1
|
||||
#define X509_TRUST_MAX 8
|
||||
|
||||
/* trust_flags values */
|
||||
#define X509_TRUST_DYNAMIC (1U << 0)
|
||||
#define X509_TRUST_DYNAMIC_NAME (1U << 1)
|
||||
/* No compat trust if self-signed, preempts "DO_SS" */
|
||||
#define X509_TRUST_NO_SS_COMPAT (1U << 2)
|
||||
/* Compat trust if no explicit accepted trust EKUs */
|
||||
#define X509_TRUST_DO_SS_COMPAT (1U << 3)
|
||||
/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */
|
||||
#define X509_TRUST_OK_ANY_EKU (1U << 4)
|
||||
|
||||
/* check_trust return codes */
|
||||
#define X509_TRUST_TRUSTED 1
|
||||
#define X509_TRUST_REJECTED 2
|
||||
#define X509_TRUST_UNTRUSTED 3
|
||||
|
||||
int X509_TRUST_set(int *t, int trust);
|
||||
int X509_TRUST_get_count(void);
|
||||
X509_TRUST *X509_TRUST_get0(int idx);
|
||||
int X509_TRUST_get_by_id(int id);
|
||||
int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int),
|
||||
const char *name, int arg1, void *arg2);
|
||||
void X509_TRUST_cleanup(void);
|
||||
int X509_TRUST_get_flags(const X509_TRUST *xp);
|
||||
char *X509_TRUST_get0_name(const X509_TRUST *xp);
|
||||
int X509_TRUST_get_trust(const X509_TRUST *xp);
|
||||
|
||||
int X509_trusted(const X509 *x);
|
||||
int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj);
|
||||
int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj);
|
||||
void X509_trust_clear(X509 *x);
|
||||
void X509_reject_clear(X509 *x);
|
||||
STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x);
|
||||
STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x);
|
||||
|
||||
int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *,
|
||||
int);
|
||||
int X509_check_trust(X509 *x, int id, int flags);
|
||||
|
||||
int X509_verify_cert(X509_STORE_CTX *ctx);
|
||||
int X509_STORE_CTX_verify(X509_STORE_CTX *ctx);
|
||||
STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs,
|
||||
X509_STORE *store, int with_self_signed,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
int X509_STORE_set_depth(X509_STORE *store, int depth);
|
||||
|
||||
typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
|
||||
int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx);
|
||||
typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *);
|
||||
typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer,
|
||||
X509_STORE_CTX *ctx, X509 *x);
|
||||
typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx,
|
||||
X509 *x, X509 *issuer);
|
||||
typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx);
|
||||
typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx,
|
||||
X509_CRL **crl, X509 *x);
|
||||
typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl);
|
||||
typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx,
|
||||
X509_CRL *crl, X509 *x);
|
||||
typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx);
|
||||
typedef STACK_OF(X509)
|
||||
*(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx,
|
||||
const X509_NAME *nm);
|
||||
typedef STACK_OF(X509_CRL)
|
||||
*(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx,
|
||||
const X509_NAME *nm);
|
||||
typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx);
|
||||
|
||||
void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
|
||||
|
||||
#define X509_STORE_CTX_set_app_data(ctx, data) \
|
||||
X509_STORE_CTX_set_ex_data(ctx, 0, data)
|
||||
#define X509_STORE_CTX_get_app_data(ctx) \
|
||||
X509_STORE_CTX_get_ex_data(ctx, 0)
|
||||
|
||||
#define X509_L_FILE_LOAD 1
|
||||
#define X509_L_ADD_DIR 2
|
||||
#define X509_L_ADD_STORE 3
|
||||
#define X509_L_LOAD_STORE 4
|
||||
|
||||
#define X509_LOOKUP_load_file(x, name, type) \
|
||||
X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL)
|
||||
|
||||
#define X509_LOOKUP_add_dir(x, name, type) \
|
||||
X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL)
|
||||
|
||||
#define X509_LOOKUP_add_store(x, name) \
|
||||
X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL)
|
||||
|
||||
#define X509_LOOKUP_load_store(x, name) \
|
||||
X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL)
|
||||
|
||||
#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \
|
||||
X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \
|
||||
(libctx), (propq))
|
||||
|
||||
#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \
|
||||
X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \
|
||||
(libctx), (propq))
|
||||
|
||||
#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \
|
||||
X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \
|
||||
(libctx), (propq))
|
||||
|
||||
#define X509_V_OK 0
|
||||
#define X509_V_ERR_UNSPECIFIED 1
|
||||
#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2
|
||||
#define X509_V_ERR_UNABLE_TO_GET_CRL 3
|
||||
#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4
|
||||
#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5
|
||||
#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6
|
||||
#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7
|
||||
#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8
|
||||
#define X509_V_ERR_CERT_NOT_YET_VALID 9
|
||||
#define X509_V_ERR_CERT_HAS_EXPIRED 10
|
||||
#define X509_V_ERR_CRL_NOT_YET_VALID 11
|
||||
#define X509_V_ERR_CRL_HAS_EXPIRED 12
|
||||
#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13
|
||||
#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14
|
||||
#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15
|
||||
#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16
|
||||
#define X509_V_ERR_OUT_OF_MEM 17
|
||||
#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18
|
||||
#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19
|
||||
#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20
|
||||
#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21
|
||||
#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22
|
||||
#define X509_V_ERR_CERT_REVOKED 23
|
||||
#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24
|
||||
#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25
|
||||
#define X509_V_ERR_INVALID_PURPOSE 26
|
||||
#define X509_V_ERR_CERT_UNTRUSTED 27
|
||||
#define X509_V_ERR_CERT_REJECTED 28
|
||||
|
||||
/* These are 'informational' when looking for issuer cert */
|
||||
#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29
|
||||
#define X509_V_ERR_AKID_SKID_MISMATCH 30
|
||||
#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31
|
||||
#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32
|
||||
#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33
|
||||
#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34
|
||||
#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35
|
||||
#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36
|
||||
#define X509_V_ERR_INVALID_NON_CA 37
|
||||
#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38
|
||||
#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39
|
||||
#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40
|
||||
#define X509_V_ERR_INVALID_EXTENSION 41
|
||||
#define X509_V_ERR_INVALID_POLICY_EXTENSION 42
|
||||
#define X509_V_ERR_NO_EXPLICIT_POLICY 43
|
||||
#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44
|
||||
#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45
|
||||
#define X509_V_ERR_UNNESTED_RESOURCE 46
|
||||
#define X509_V_ERR_PERMITTED_VIOLATION 47
|
||||
#define X509_V_ERR_EXCLUDED_VIOLATION 48
|
||||
#define X509_V_ERR_SUBTREE_MINMAX 49
|
||||
/* The application is not happy */
|
||||
#define X509_V_ERR_APPLICATION_VERIFICATION 50
|
||||
#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51
|
||||
#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52
|
||||
#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53
|
||||
#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54
|
||||
/* Another issuer check debug option */
|
||||
#define X509_V_ERR_PATH_LOOP 55
|
||||
/* Suite B mode algorithm violation */
|
||||
#define X509_V_ERR_SUITE_B_INVALID_VERSION 56
|
||||
#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57
|
||||
#define X509_V_ERR_SUITE_B_INVALID_CURVE 58
|
||||
#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59
|
||||
#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60
|
||||
#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61
|
||||
/* Host, email and IP check errors */
|
||||
#define X509_V_ERR_HOSTNAME_MISMATCH 62
|
||||
#define X509_V_ERR_EMAIL_MISMATCH 63
|
||||
#define X509_V_ERR_IP_ADDRESS_MISMATCH 64
|
||||
/* DANE TLSA errors */
|
||||
#define X509_V_ERR_DANE_NO_MATCH 65
|
||||
/* security level errors */
|
||||
#define X509_V_ERR_EE_KEY_TOO_SMALL 66
|
||||
#define X509_V_ERR_CA_KEY_TOO_SMALL 67
|
||||
#define X509_V_ERR_CA_MD_TOO_WEAK 68
|
||||
/* Caller error */
|
||||
#define X509_V_ERR_INVALID_CALL 69
|
||||
/* Issuer lookup error */
|
||||
#define X509_V_ERR_STORE_LOOKUP 70
|
||||
/* Certificate transparency */
|
||||
#define X509_V_ERR_NO_VALID_SCTS 71
|
||||
|
||||
#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72
|
||||
/* OCSP status errors */
|
||||
#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */
|
||||
#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */
|
||||
#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */
|
||||
|
||||
#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76
|
||||
#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77
|
||||
|
||||
/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */
|
||||
#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78
|
||||
#define X509_V_ERR_INVALID_CA 79
|
||||
#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80
|
||||
#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81
|
||||
#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82
|
||||
#define X509_V_ERR_ISSUER_NAME_EMPTY 83
|
||||
#define X509_V_ERR_SUBJECT_NAME_EMPTY 84
|
||||
#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85
|
||||
#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86
|
||||
#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87
|
||||
#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88
|
||||
#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89
|
||||
#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90
|
||||
#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91
|
||||
#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92
|
||||
#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93
|
||||
#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94
|
||||
#define X509_V_ERR_RPK_UNTRUSTED 95
|
||||
|
||||
/* Certificate verify flags */
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */
|
||||
#endif
|
||||
/* Use check time instead of current time */
|
||||
#define X509_V_FLAG_USE_CHECK_TIME 0x2
|
||||
/* Lookup CRLs */
|
||||
#define X509_V_FLAG_CRL_CHECK 0x4
|
||||
/* Lookup CRLs for whole chain */
|
||||
#define X509_V_FLAG_CRL_CHECK_ALL 0x8
|
||||
/* Ignore unhandled critical extensions */
|
||||
#define X509_V_FLAG_IGNORE_CRITICAL 0x10
|
||||
/* Disable workarounds for broken certificates */
|
||||
#define X509_V_FLAG_X509_STRICT 0x20
|
||||
/* Enable proxy certificate validation */
|
||||
#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40
|
||||
/* Enable policy checking */
|
||||
#define X509_V_FLAG_POLICY_CHECK 0x80
|
||||
/* Policy variable require-explicit-policy */
|
||||
#define X509_V_FLAG_EXPLICIT_POLICY 0x100
|
||||
/* Policy variable inhibit-any-policy */
|
||||
#define X509_V_FLAG_INHIBIT_ANY 0x200
|
||||
/* Policy variable inhibit-policy-mapping */
|
||||
#define X509_V_FLAG_INHIBIT_MAP 0x400
|
||||
/* Notify callback that policy is OK */
|
||||
#define X509_V_FLAG_NOTIFY_POLICY 0x800
|
||||
/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */
|
||||
#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000
|
||||
/* Delta CRL support */
|
||||
#define X509_V_FLAG_USE_DELTAS 0x2000
|
||||
/* Check self-signed CA signature */
|
||||
#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000
|
||||
/* Use trusted store first */
|
||||
#define X509_V_FLAG_TRUSTED_FIRST 0x8000
|
||||
/* Suite B 128 bit only mode: not normally used */
|
||||
#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000
|
||||
/* Suite B 192 bit only mode */
|
||||
#define X509_V_FLAG_SUITEB_192_LOS 0x20000
|
||||
/* Suite B 128 bit mode allowing 192 bit algorithms */
|
||||
#define X509_V_FLAG_SUITEB_128_LOS 0x30000
|
||||
/* Allow partial chains if at least one certificate is in trusted store */
|
||||
#define X509_V_FLAG_PARTIAL_CHAIN 0x80000
|
||||
/*
|
||||
* If the initial chain is not trusted, do not attempt to build an alternative
|
||||
* chain. Alternate chain checking was introduced in 1.1.0. Setting this flag
|
||||
* will force the behaviour to match that of previous versions.
|
||||
*/
|
||||
#define X509_V_FLAG_NO_ALT_CHAINS 0x100000
|
||||
/* Do not check certificate/CRL validity against current time */
|
||||
#define X509_V_FLAG_NO_CHECK_TIME 0x200000
|
||||
|
||||
#define X509_VP_FLAG_DEFAULT 0x1
|
||||
#define X509_VP_FLAG_OVERWRITE 0x2
|
||||
#define X509_VP_FLAG_RESET_FLAGS 0x4
|
||||
#define X509_VP_FLAG_LOCKED 0x8
|
||||
#define X509_VP_FLAG_ONCE 0x10
|
||||
|
||||
/* Internal use: mask of policy related options */
|
||||
#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \
|
||||
| X509_V_FLAG_EXPLICIT_POLICY \
|
||||
| X509_V_FLAG_INHIBIT_ANY \
|
||||
| X509_V_FLAG_INHIBIT_MAP)
|
||||
|
||||
int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name);
|
||||
X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name);
|
||||
X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h,
|
||||
X509_OBJECT *x);
|
||||
int X509_OBJECT_up_ref_count(X509_OBJECT *a);
|
||||
X509_OBJECT *X509_OBJECT_new(void);
|
||||
void X509_OBJECT_free(X509_OBJECT *a);
|
||||
X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a);
|
||||
X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a);
|
||||
int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj);
|
||||
X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a);
|
||||
int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj);
|
||||
X509_STORE *X509_STORE_new(void);
|
||||
void X509_STORE_free(X509_STORE *xs);
|
||||
int X509_STORE_lock(X509_STORE *xs);
|
||||
int X509_STORE_unlock(X509_STORE *xs);
|
||||
int X509_STORE_up_ref(X509_STORE *xs);
|
||||
STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs);
|
||||
STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs);
|
||||
STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs);
|
||||
STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs,
|
||||
const X509_NAME *nm);
|
||||
STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st,
|
||||
const X509_NAME *nm);
|
||||
int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags);
|
||||
int X509_STORE_set_purpose(X509_STORE *xs, int purpose);
|
||||
int X509_STORE_set_trust(X509_STORE *xs, int trust);
|
||||
int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm);
|
||||
X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs);
|
||||
|
||||
void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify);
|
||||
#define X509_STORE_set_verify_func(ctx, func) \
|
||||
X509_STORE_set_verify((ctx), (func))
|
||||
void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx,
|
||||
X509_STORE_CTX_verify_fn verify);
|
||||
X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs);
|
||||
void X509_STORE_set_verify_cb(X509_STORE *xs,
|
||||
X509_STORE_CTX_verify_cb verify_cb);
|
||||
#define X509_STORE_set_verify_cb_func(ctx, func) \
|
||||
X509_STORE_set_verify_cb((ctx), (func))
|
||||
X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs);
|
||||
void X509_STORE_set_get_issuer(X509_STORE *xs,
|
||||
X509_STORE_CTX_get_issuer_fn get_issuer);
|
||||
X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs);
|
||||
void X509_STORE_set_check_issued(X509_STORE *xs,
|
||||
X509_STORE_CTX_check_issued_fn check_issued);
|
||||
X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s);
|
||||
void X509_STORE_set_check_revocation(X509_STORE *xs,
|
||||
X509_STORE_CTX_check_revocation_fn check_revocation);
|
||||
X509_STORE_CTX_check_revocation_fn
|
||||
X509_STORE_get_check_revocation(const X509_STORE *xs);
|
||||
void X509_STORE_set_get_crl(X509_STORE *xs,
|
||||
X509_STORE_CTX_get_crl_fn get_crl);
|
||||
X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs);
|
||||
void X509_STORE_set_check_crl(X509_STORE *xs,
|
||||
X509_STORE_CTX_check_crl_fn check_crl);
|
||||
X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs);
|
||||
void X509_STORE_set_cert_crl(X509_STORE *xs,
|
||||
X509_STORE_CTX_cert_crl_fn cert_crl);
|
||||
X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs);
|
||||
void X509_STORE_set_check_policy(X509_STORE *xs,
|
||||
X509_STORE_CTX_check_policy_fn check_policy);
|
||||
X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s);
|
||||
void X509_STORE_set_lookup_certs(X509_STORE *xs,
|
||||
X509_STORE_CTX_lookup_certs_fn lookup_certs);
|
||||
X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s);
|
||||
void X509_STORE_set_lookup_crls(X509_STORE *xs,
|
||||
X509_STORE_CTX_lookup_crls_fn lookup_crls);
|
||||
#define X509_STORE_set_lookup_crls_cb(ctx, func) \
|
||||
X509_STORE_set_lookup_crls((ctx), (func))
|
||||
X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs);
|
||||
void X509_STORE_set_cleanup(X509_STORE *xs,
|
||||
X509_STORE_CTX_cleanup_fn cleanup);
|
||||
X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs);
|
||||
|
||||
#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef)
|
||||
int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data);
|
||||
void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx);
|
||||
|
||||
X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||
X509_STORE_CTX *X509_STORE_CTX_new(void);
|
||||
|
||||
int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
|
||||
|
||||
void X509_STORE_CTX_free(X509_STORE_CTX *ctx);
|
||||
int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store,
|
||||
X509 *target, STACK_OF(X509) *untrusted);
|
||||
int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store,
|
||||
EVP_PKEY *rpk);
|
||||
void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
|
||||
void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
|
||||
|
||||
X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx);
|
||||
X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx);
|
||||
EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx);
|
||||
STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
|
||||
void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
|
||||
X509_STORE_CTX_verify_cb verify);
|
||||
X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx,
|
||||
X509_STORE_CTX_get_crl_fn get_crl);
|
||||
X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx);
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain
|
||||
#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted
|
||||
#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack
|
||||
#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject
|
||||
#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs
|
||||
#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls
|
||||
/* the following macro is misspelled; use X509_STORE_get1_certs instead */
|
||||
#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs
|
||||
/* the following macro is misspelled; use X509_STORE_get1_crls instead */
|
||||
#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls
|
||||
#endif
|
||||
|
||||
X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m);
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_store(void);
|
||||
|
||||
typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc,
|
||||
long argl, char **ret);
|
||||
typedef int (*X509_LOOKUP_ctrl_ex_fn)(
|
||||
X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name,
|
||||
X509_OBJECT *ret);
|
||||
typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name,
|
||||
X509_OBJECT *ret,
|
||||
OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name,
|
||||
const ASN1_INTEGER *serial,
|
||||
X509_OBJECT *ret);
|
||||
typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const unsigned char *bytes,
|
||||
int len,
|
||||
X509_OBJECT *ret);
|
||||
typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const char *str,
|
||||
int len,
|
||||
X509_OBJECT *ret);
|
||||
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name);
|
||||
void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method,
|
||||
int (*new_item)(X509_LOOKUP *ctx));
|
||||
int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx);
|
||||
|
||||
int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method,
|
||||
void (*free_fn)(X509_LOOKUP *ctx));
|
||||
void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx);
|
||||
|
||||
int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method,
|
||||
int (*init)(X509_LOOKUP *ctx));
|
||||
int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx);
|
||||
|
||||
int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method,
|
||||
int (*shutdown)(X509_LOOKUP *ctx));
|
||||
int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx);
|
||||
|
||||
int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method,
|
||||
X509_LOOKUP_ctrl_fn ctrl_fn);
|
||||
X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method,
|
||||
X509_LOOKUP_get_by_subject_fn fn);
|
||||
X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject(
|
||||
const X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method,
|
||||
X509_LOOKUP_get_by_issuer_serial_fn fn);
|
||||
X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial(
|
||||
const X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method,
|
||||
X509_LOOKUP_get_by_fingerprint_fn fn);
|
||||
X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint(
|
||||
const X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method,
|
||||
X509_LOOKUP_get_by_alias_fn fn);
|
||||
X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias(
|
||||
const X509_LOOKUP_METHOD *method);
|
||||
|
||||
int X509_STORE_add_cert(X509_STORE *xs, X509 *x);
|
||||
int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x);
|
||||
|
||||
int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name, X509_OBJECT *ret);
|
||||
X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs,
|
||||
X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name);
|
||||
|
||||
int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
|
||||
long argl, char **ret);
|
||||
int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl,
|
||||
char **ret, OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type);
|
||||
int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type);
|
||||
int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type);
|
||||
int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method);
|
||||
void X509_LOOKUP_free(X509_LOOKUP *ctx);
|
||||
int X509_LOOKUP_init(X509_LOOKUP *ctx);
|
||||
int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name, X509_OBJECT *ret);
|
||||
int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name, X509_OBJECT *ret,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type,
|
||||
const X509_NAME *name,
|
||||
const ASN1_INTEGER *serial,
|
||||
X509_OBJECT *ret);
|
||||
int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type,
|
||||
const unsigned char *bytes, int len,
|
||||
X509_OBJECT *ret);
|
||||
int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type,
|
||||
const char *str, int len, X509_OBJECT *ret);
|
||||
int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data);
|
||||
void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx);
|
||||
X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx);
|
||||
int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
|
||||
|
||||
int X509_STORE_load_file(X509_STORE *xs, const char *file);
|
||||
int X509_STORE_load_path(X509_STORE *xs, const char *path);
|
||||
int X509_STORE_load_store(X509_STORE *xs, const char *store);
|
||||
int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir);
|
||||
int X509_STORE_set_default_paths(X509_STORE *xs);
|
||||
|
||||
int X509_STORE_load_file_ex(X509_STORE *xs, const char *file,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int X509_STORE_load_store_ex(X509_STORE *xs, const char *store,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int X509_STORE_load_locations_ex(X509_STORE *xs,
|
||||
const char *file, const char *dir,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int X509_STORE_set_default_paths_ex(X509_STORE *xs,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
|
||||
#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef)
|
||||
int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data);
|
||||
void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx);
|
||||
int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
|
||||
int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth);
|
||||
X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x);
|
||||
X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx);
|
||||
X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx);
|
||||
X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx);
|
||||
STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx);
|
||||
STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target);
|
||||
void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target);
|
||||
void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk);
|
||||
void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk);
|
||||
int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose);
|
||||
int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust);
|
||||
int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose,
|
||||
int purpose, int trust);
|
||||
void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags);
|
||||
void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags,
|
||||
time_t t);
|
||||
void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx,
|
||||
unsigned int current_reasons);
|
||||
|
||||
X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx);
|
||||
int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx);
|
||||
int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx);
|
||||
|
||||
X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx);
|
||||
void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param);
|
||||
int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name);
|
||||
|
||||
/*
|
||||
* Bridge opacity barrier between libcrypt and libssl, also needed to support
|
||||
* offline testing in test/danetest.c
|
||||
*/
|
||||
void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane);
|
||||
#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0)
|
||||
|
||||
/* X509_VERIFY_PARAM functions */
|
||||
|
||||
X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void);
|
||||
void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to,
|
||||
const X509_VERIFY_PARAM *from);
|
||||
int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to,
|
||||
const X509_VERIFY_PARAM *from);
|
||||
int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name);
|
||||
int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param,
|
||||
unsigned long flags);
|
||||
int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param,
|
||||
unsigned long flags);
|
||||
unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose);
|
||||
int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust);
|
||||
void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth);
|
||||
void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level);
|
||||
time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param);
|
||||
void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t);
|
||||
int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param,
|
||||
ASN1_OBJECT *policy);
|
||||
int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param,
|
||||
STACK_OF(ASN1_OBJECT) *policies);
|
||||
|
||||
int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param,
|
||||
uint32_t flags);
|
||||
uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param);
|
||||
|
||||
char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx);
|
||||
int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
|
||||
const char *name, size_t namelen);
|
||||
int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
|
||||
const char *name, size_t namelen);
|
||||
void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param,
|
||||
unsigned int flags);
|
||||
unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param);
|
||||
char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param);
|
||||
void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *);
|
||||
char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
|
||||
const char *email, size_t emaillen);
|
||||
char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
|
||||
const unsigned char *ip, size_t iplen);
|
||||
int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param,
|
||||
const char *ipasc);
|
||||
|
||||
int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param);
|
||||
const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param);
|
||||
|
||||
int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_get_count(void);
|
||||
const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id);
|
||||
const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name);
|
||||
void X509_VERIFY_PARAM_table_cleanup(void);
|
||||
|
||||
/* Non positive return values are errors */
|
||||
#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */
|
||||
#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */
|
||||
#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */
|
||||
|
||||
/*
|
||||
* Positive return values form a bit mask, all but the first are internal to
|
||||
* the library and don't appear in results from X509_policy_check().
|
||||
*/
|
||||
#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */
|
||||
#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */
|
||||
#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */
|
||||
|
||||
int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy,
|
||||
STACK_OF(X509) *certs,
|
||||
STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags);
|
||||
|
||||
void X509_policy_tree_free(X509_POLICY_TREE *tree);
|
||||
|
||||
int X509_policy_tree_level_count(const X509_POLICY_TREE *tree);
|
||||
X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree,
|
||||
int i);
|
||||
|
||||
STACK_OF(X509_POLICY_NODE)
|
||||
*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree);
|
||||
|
||||
STACK_OF(X509_POLICY_NODE)
|
||||
*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree);
|
||||
|
||||
int X509_policy_level_node_count(X509_POLICY_LEVEL *level);
|
||||
|
||||
X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level,
|
||||
int i);
|
||||
|
||||
const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node);
|
||||
|
||||
STACK_OF(POLICYQUALINFO)
|
||||
*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node);
|
||||
const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by apps/progs.pl
|
||||
*
|
||||
* Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "function.h"
|
||||
|
||||
extern int asn1parse_main(int argc, char *argv[]);
|
||||
extern int ca_main(int argc, char *argv[]);
|
||||
extern int ciphers_main(int argc, char *argv[]);
|
||||
extern int cmp_main(int argc, char *argv[]);
|
||||
extern int cms_main(int argc, char *argv[]);
|
||||
extern int crl_main(int argc, char *argv[]);
|
||||
extern int crl2pkcs7_main(int argc, char *argv[]);
|
||||
extern int dgst_main(int argc, char *argv[]);
|
||||
extern int dhparam_main(int argc, char *argv[]);
|
||||
extern int dsa_main(int argc, char *argv[]);
|
||||
extern int dsaparam_main(int argc, char *argv[]);
|
||||
extern int ec_main(int argc, char *argv[]);
|
||||
extern int ecparam_main(int argc, char *argv[]);
|
||||
extern int enc_main(int argc, char *argv[]);
|
||||
extern int engine_main(int argc, char *argv[]);
|
||||
extern int errstr_main(int argc, char *argv[]);
|
||||
extern int fipsinstall_main(int argc, char *argv[]);
|
||||
extern int gendsa_main(int argc, char *argv[]);
|
||||
extern int genpkey_main(int argc, char *argv[]);
|
||||
extern int genrsa_main(int argc, char *argv[]);
|
||||
extern int help_main(int argc, char *argv[]);
|
||||
extern int info_main(int argc, char *argv[]);
|
||||
extern int kdf_main(int argc, char *argv[]);
|
||||
extern int list_main(int argc, char *argv[]);
|
||||
extern int mac_main(int argc, char *argv[]);
|
||||
extern int nseq_main(int argc, char *argv[]);
|
||||
extern int ocsp_main(int argc, char *argv[]);
|
||||
extern int passwd_main(int argc, char *argv[]);
|
||||
extern int pkcs12_main(int argc, char *argv[]);
|
||||
extern int pkcs7_main(int argc, char *argv[]);
|
||||
extern int pkcs8_main(int argc, char *argv[]);
|
||||
extern int pkey_main(int argc, char *argv[]);
|
||||
extern int pkeyparam_main(int argc, char *argv[]);
|
||||
extern int pkeyutl_main(int argc, char *argv[]);
|
||||
extern int prime_main(int argc, char *argv[]);
|
||||
extern int rand_main(int argc, char *argv[]);
|
||||
extern int rehash_main(int argc, char *argv[]);
|
||||
extern int req_main(int argc, char *argv[]);
|
||||
extern int rsa_main(int argc, char *argv[]);
|
||||
extern int rsautl_main(int argc, char *argv[]);
|
||||
extern int s_client_main(int argc, char *argv[]);
|
||||
extern int s_server_main(int argc, char *argv[]);
|
||||
extern int s_time_main(int argc, char *argv[]);
|
||||
extern int sess_id_main(int argc, char *argv[]);
|
||||
extern int skeyutl_main(int argc, char *argv[]);
|
||||
extern int smime_main(int argc, char *argv[]);
|
||||
extern int speed_main(int argc, char *argv[]);
|
||||
extern int spkac_main(int argc, char *argv[]);
|
||||
extern int srp_main(int argc, char *argv[]);
|
||||
extern int storeutl_main(int argc, char *argv[]);
|
||||
extern int ts_main(int argc, char *argv[]);
|
||||
extern int verify_main(int argc, char *argv[]);
|
||||
extern int version_main(int argc, char *argv[]);
|
||||
extern int x509_main(int argc, char *argv[]);
|
||||
|
||||
extern const OPTIONS asn1parse_options[];
|
||||
extern const OPTIONS ca_options[];
|
||||
extern const OPTIONS ciphers_options[];
|
||||
extern const OPTIONS cmp_options[];
|
||||
extern const OPTIONS cms_options[];
|
||||
extern const OPTIONS crl_options[];
|
||||
extern const OPTIONS crl2pkcs7_options[];
|
||||
extern const OPTIONS dgst_options[];
|
||||
extern const OPTIONS dhparam_options[];
|
||||
extern const OPTIONS dsa_options[];
|
||||
extern const OPTIONS dsaparam_options[];
|
||||
extern const OPTIONS ec_options[];
|
||||
extern const OPTIONS ecparam_options[];
|
||||
extern const OPTIONS enc_options[];
|
||||
extern const OPTIONS engine_options[];
|
||||
extern const OPTIONS errstr_options[];
|
||||
extern const OPTIONS fipsinstall_options[];
|
||||
extern const OPTIONS gendsa_options[];
|
||||
extern const OPTIONS genpkey_options[];
|
||||
extern const OPTIONS genrsa_options[];
|
||||
extern const OPTIONS help_options[];
|
||||
extern const OPTIONS info_options[];
|
||||
extern const OPTIONS kdf_options[];
|
||||
extern const OPTIONS list_options[];
|
||||
extern const OPTIONS mac_options[];
|
||||
extern const OPTIONS nseq_options[];
|
||||
extern const OPTIONS ocsp_options[];
|
||||
extern const OPTIONS passwd_options[];
|
||||
extern const OPTIONS pkcs12_options[];
|
||||
extern const OPTIONS pkcs7_options[];
|
||||
extern const OPTIONS pkcs8_options[];
|
||||
extern const OPTIONS pkey_options[];
|
||||
extern const OPTIONS pkeyparam_options[];
|
||||
extern const OPTIONS pkeyutl_options[];
|
||||
extern const OPTIONS prime_options[];
|
||||
extern const OPTIONS rand_options[];
|
||||
extern const OPTIONS rehash_options[];
|
||||
extern const OPTIONS req_options[];
|
||||
extern const OPTIONS rsa_options[];
|
||||
extern const OPTIONS rsautl_options[];
|
||||
extern const OPTIONS s_client_options[];
|
||||
extern const OPTIONS s_server_options[];
|
||||
extern const OPTIONS s_time_options[];
|
||||
extern const OPTIONS sess_id_options[];
|
||||
extern const OPTIONS skeyutl_options[];
|
||||
extern const OPTIONS smime_options[];
|
||||
extern const OPTIONS speed_options[];
|
||||
extern const OPTIONS spkac_options[];
|
||||
extern const OPTIONS srp_options[];
|
||||
extern const OPTIONS storeutl_options[];
|
||||
extern const OPTIONS ts_options[];
|
||||
extern const OPTIONS verify_options[];
|
||||
extern const OPTIONS version_options[];
|
||||
extern const OPTIONS x509_options[];
|
||||
|
||||
extern FUNCTION functions[];
|
||||
@@ -0,0 +1,116 @@
|
||||
{
|
||||
'variables': {
|
||||
'openssl_defines_linux64-riscv64': [
|
||||
'NDEBUG',
|
||||
'OPENSSL_USE_NODELETE',
|
||||
'OPENSSL_BUILDING_OPENSSL',
|
||||
'BROTLI',
|
||||
'ZLIB',
|
||||
'ZSTD',
|
||||
'AES_ASM',
|
||||
'GHASH_ASM',
|
||||
'INCLUDE_C_CHACHA20',
|
||||
'INCLUDE_C_SHA256',
|
||||
'INCLUDE_C_SHA512',
|
||||
'OPENSSL_CPUID_OBJ',
|
||||
'OPENSSL_SM3_ASM',
|
||||
'SHA256_ASM',
|
||||
'SHA512_ASM',
|
||||
'SM4_ASM',
|
||||
'OPENSSL_PIC',
|
||||
],
|
||||
'openssl_cflags_linux64-riscv64': [
|
||||
'-Wa,--noexecstack',
|
||||
'-Wall -O3',
|
||||
'-pthread',
|
||||
'-Wall -O3',
|
||||
],
|
||||
'openssl_ex_libs_linux64-riscv64': [
|
||||
'-lm -ldl -pthread',
|
||||
],
|
||||
'openssl_cli_srcs_linux64-riscv64': [
|
||||
'openssl/apps/lib/cmp_mock_srv.c',
|
||||
'openssl/apps/asn1parse.c',
|
||||
'openssl/apps/ca.c',
|
||||
'openssl/apps/ciphers.c',
|
||||
'openssl/apps/cmp.c',
|
||||
'openssl/apps/cms.c',
|
||||
'openssl/apps/crl.c',
|
||||
'openssl/apps/crl2pkcs7.c',
|
||||
'openssl/apps/dgst.c',
|
||||
'openssl/apps/dhparam.c',
|
||||
'openssl/apps/dsa.c',
|
||||
'openssl/apps/dsaparam.c',
|
||||
'openssl/apps/ec.c',
|
||||
'openssl/apps/ecparam.c',
|
||||
'openssl/apps/enc.c',
|
||||
'openssl/apps/engine.c',
|
||||
'openssl/apps/errstr.c',
|
||||
'openssl/apps/fipsinstall.c',
|
||||
'openssl/apps/gendsa.c',
|
||||
'openssl/apps/genpkey.c',
|
||||
'openssl/apps/genrsa.c',
|
||||
'openssl/apps/info.c',
|
||||
'openssl/apps/kdf.c',
|
||||
'openssl/apps/list.c',
|
||||
'openssl/apps/mac.c',
|
||||
'openssl/apps/nseq.c',
|
||||
'openssl/apps/ocsp.c',
|
||||
'openssl/apps/openssl.c',
|
||||
'openssl/apps/passwd.c',
|
||||
'openssl/apps/pkcs12.c',
|
||||
'openssl/apps/pkcs7.c',
|
||||
'openssl/apps/pkcs8.c',
|
||||
'openssl/apps/pkey.c',
|
||||
'openssl/apps/pkeyparam.c',
|
||||
'openssl/apps/pkeyutl.c',
|
||||
'openssl/apps/prime.c',
|
||||
'./config/archs/linux64-riscv64/asm/apps/progs.c',
|
||||
'openssl/apps/rand.c',
|
||||
'openssl/apps/rehash.c',
|
||||
'openssl/apps/req.c',
|
||||
'openssl/apps/rsa.c',
|
||||
'openssl/apps/rsautl.c',
|
||||
'openssl/apps/s_client.c',
|
||||
'openssl/apps/s_server.c',
|
||||
'openssl/apps/s_time.c',
|
||||
'openssl/apps/sess_id.c',
|
||||
'openssl/apps/skeyutl.c',
|
||||
'openssl/apps/smime.c',
|
||||
'openssl/apps/speed.c',
|
||||
'openssl/apps/spkac.c',
|
||||
'openssl/apps/srp.c',
|
||||
'openssl/apps/storeutl.c',
|
||||
'openssl/apps/ts.c',
|
||||
'openssl/apps/verify.c',
|
||||
'openssl/apps/version.c',
|
||||
'openssl/apps/x509.c',
|
||||
'openssl/apps/lib/app_libctx.c',
|
||||
'openssl/apps/lib/app_params.c',
|
||||
'openssl/apps/lib/app_provider.c',
|
||||
'openssl/apps/lib/app_rand.c',
|
||||
'openssl/apps/lib/app_x509.c',
|
||||
'openssl/apps/lib/apps.c',
|
||||
'openssl/apps/lib/apps_opt_printf.c',
|
||||
'openssl/apps/lib/apps_ui.c',
|
||||
'openssl/apps/lib/columns.c',
|
||||
'openssl/apps/lib/engine.c',
|
||||
'openssl/apps/lib/engine_loader.c',
|
||||
'openssl/apps/lib/fmt.c',
|
||||
'openssl/apps/lib/http_server.c',
|
||||
'openssl/apps/lib/log.c',
|
||||
'openssl/apps/lib/names.c',
|
||||
'openssl/apps/lib/opt.c',
|
||||
'openssl/apps/lib/s_cb.c',
|
||||
'openssl/apps/lib/s_socket.c',
|
||||
'openssl/apps/lib/tlssrp_depr.c',
|
||||
],
|
||||
},
|
||||
'defines': ['<@(openssl_defines_linux64-riscv64)'],
|
||||
'include_dirs': [
|
||||
'./include',
|
||||
],
|
||||
'cflags' : ['<@(openssl_cflags_linux64-riscv64)'],
|
||||
'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'],
|
||||
'sources': ['<@(openssl_cli_srcs_linux64-riscv64)'],
|
||||
}
|
||||
@@ -0,0 +1,393 @@
|
||||
{
|
||||
'variables': {
|
||||
'openssl_sources': [
|
||||
'openssl/crypto/aes/aes_cbc.c',
|
||||
'openssl/crypto/aes/aes_ecb.c',
|
||||
'openssl/crypto/aes/aes_misc.c',
|
||||
'openssl/crypto/bn/bn_add.c',
|
||||
'openssl/crypto/bn/bn_asm.c',
|
||||
'openssl/crypto/bn/bn_blind.c',
|
||||
'openssl/crypto/bn/bn_const.c',
|
||||
'openssl/crypto/bn/bn_conv.c',
|
||||
'openssl/crypto/bn/bn_ctx.c',
|
||||
'openssl/crypto/bn/bn_dh.c',
|
||||
'openssl/crypto/bn/bn_div.c',
|
||||
'openssl/crypto/bn/bn_exp.c',
|
||||
'openssl/crypto/bn/bn_exp2.c',
|
||||
'openssl/crypto/bn/bn_gcd.c',
|
||||
'openssl/crypto/bn/bn_gf2m.c',
|
||||
'openssl/crypto/bn/bn_intern.c',
|
||||
'openssl/crypto/bn/bn_kron.c',
|
||||
'openssl/crypto/bn/bn_lib.c',
|
||||
'openssl/crypto/bn/bn_mod.c',
|
||||
'openssl/crypto/bn/bn_mont.c',
|
||||
'openssl/crypto/bn/bn_mpi.c',
|
||||
'openssl/crypto/bn/bn_mul.c',
|
||||
'openssl/crypto/bn/bn_nist.c',
|
||||
'openssl/crypto/bn/bn_prime.c',
|
||||
'openssl/crypto/bn/bn_rand.c',
|
||||
'openssl/crypto/bn/bn_recp.c',
|
||||
'openssl/crypto/bn/bn_rsa_fips186_4.c',
|
||||
'openssl/crypto/bn/bn_shift.c',
|
||||
'openssl/crypto/bn/bn_sqr.c',
|
||||
'openssl/crypto/bn/bn_sqrt.c',
|
||||
'openssl/crypto/bn/bn_word.c',
|
||||
'openssl/crypto/buffer/buffer.c',
|
||||
'openssl/crypto/cmac/cmac.c',
|
||||
'openssl/crypto/des/des_enc.c',
|
||||
'openssl/crypto/des/ecb3_enc.c',
|
||||
'openssl/crypto/des/fcrypt_b.c',
|
||||
'openssl/crypto/des/set_key.c',
|
||||
'openssl/crypto/dh/dh_backend.c',
|
||||
'openssl/crypto/dh/dh_check.c',
|
||||
'openssl/crypto/dh/dh_gen.c',
|
||||
'openssl/crypto/dh/dh_group_params.c',
|
||||
'openssl/crypto/dh/dh_kdf.c',
|
||||
'openssl/crypto/dh/dh_key.c',
|
||||
'openssl/crypto/dh/dh_lib.c',
|
||||
'openssl/crypto/dsa/dsa_backend.c',
|
||||
'openssl/crypto/dsa/dsa_check.c',
|
||||
'openssl/crypto/dsa/dsa_gen.c',
|
||||
'openssl/crypto/dsa/dsa_key.c',
|
||||
'openssl/crypto/dsa/dsa_lib.c',
|
||||
'openssl/crypto/dsa/dsa_ossl.c',
|
||||
'openssl/crypto/dsa/dsa_sign.c',
|
||||
'openssl/crypto/dsa/dsa_vrf.c',
|
||||
'openssl/crypto/ec/curve448/arch_32/f_impl32.c',
|
||||
'openssl/crypto/ec/curve448/arch_64/f_impl64.c',
|
||||
'openssl/crypto/ec/curve448/curve448.c',
|
||||
'openssl/crypto/ec/curve448/curve448_tables.c',
|
||||
'openssl/crypto/ec/curve448/eddsa.c',
|
||||
'openssl/crypto/ec/curve448/f_generic.c',
|
||||
'openssl/crypto/ec/curve448/scalar.c',
|
||||
'openssl/crypto/ec/curve25519.c',
|
||||
'openssl/crypto/ec/ec2_oct.c',
|
||||
'openssl/crypto/ec/ec2_smpl.c',
|
||||
'openssl/crypto/ec/ec_asn1.c',
|
||||
'openssl/crypto/ec/ec_backend.c',
|
||||
'openssl/crypto/ec/ec_check.c',
|
||||
'openssl/crypto/ec/ec_curve.c',
|
||||
'openssl/crypto/ec/ec_cvt.c',
|
||||
'openssl/crypto/ec/ec_key.c',
|
||||
'openssl/crypto/ec/ec_kmeth.c',
|
||||
'openssl/crypto/ec/ec_lib.c',
|
||||
'openssl/crypto/ec/ec_mult.c',
|
||||
'openssl/crypto/ec/ec_oct.c',
|
||||
'openssl/crypto/ec/ecdh_kdf.c',
|
||||
'openssl/crypto/ec/ecdh_ossl.c',
|
||||
'openssl/crypto/ec/ecdsa_ossl.c',
|
||||
'openssl/crypto/ec/ecdsa_sign.c',
|
||||
'openssl/crypto/ec/ecdsa_vrf.c',
|
||||
'openssl/crypto/ec/ecp_mont.c',
|
||||
'openssl/crypto/ec/ecp_nist.c',
|
||||
'openssl/crypto/ec/ecp_oct.c',
|
||||
'openssl/crypto/ec/ecp_smpl.c',
|
||||
'openssl/crypto/ec/ecx_backend.c',
|
||||
'openssl/crypto/ec/ecx_key.c',
|
||||
'openssl/crypto/evp/asymcipher.c',
|
||||
'openssl/crypto/evp/dh_support.c',
|
||||
'openssl/crypto/evp/digest.c',
|
||||
'openssl/crypto/evp/ec_support.c',
|
||||
'openssl/crypto/evp/evp_enc.c',
|
||||
'openssl/crypto/evp/evp_fetch.c',
|
||||
'openssl/crypto/evp/evp_lib.c',
|
||||
'openssl/crypto/evp/evp_rand.c',
|
||||
'openssl/crypto/evp/evp_utils.c',
|
||||
'openssl/crypto/evp/exchange.c',
|
||||
'openssl/crypto/evp/kdf_lib.c',
|
||||
'openssl/crypto/evp/kdf_meth.c',
|
||||
'openssl/crypto/evp/kem.c',
|
||||
'openssl/crypto/evp/keymgmt_lib.c',
|
||||
'openssl/crypto/evp/keymgmt_meth.c',
|
||||
'openssl/crypto/evp/mac_lib.c',
|
||||
'openssl/crypto/evp/mac_meth.c',
|
||||
'openssl/crypto/evp/p_lib.c',
|
||||
'openssl/crypto/evp/pmeth_check.c',
|
||||
'openssl/crypto/evp/pmeth_gn.c',
|
||||
'openssl/crypto/evp/pmeth_lib.c',
|
||||
'openssl/crypto/evp/s_lib.c',
|
||||
'openssl/crypto/evp/signature.c',
|
||||
'openssl/crypto/evp/skeymgmt_meth.c',
|
||||
'openssl/crypto/ffc/ffc_backend.c',
|
||||
'openssl/crypto/ffc/ffc_dh.c',
|
||||
'openssl/crypto/ffc/ffc_key_generate.c',
|
||||
'openssl/crypto/ffc/ffc_key_validate.c',
|
||||
'openssl/crypto/ffc/ffc_params.c',
|
||||
'openssl/crypto/ffc/ffc_params_generate.c',
|
||||
'openssl/crypto/ffc/ffc_params_validate.c',
|
||||
'openssl/crypto/hashtable/hashfunc.c',
|
||||
'openssl/crypto/hashtable/hashtable.c',
|
||||
'openssl/crypto/hmac/hmac.c',
|
||||
'openssl/crypto/lhash/lhash.c',
|
||||
'openssl/crypto/asn1_dsa.c',
|
||||
'openssl/crypto/bsearch.c',
|
||||
'openssl/crypto/context.c',
|
||||
'openssl/crypto/core_algorithm.c',
|
||||
'openssl/crypto/core_fetch.c',
|
||||
'openssl/crypto/core_namemap.c',
|
||||
'openssl/crypto/cpuid.c',
|
||||
'openssl/crypto/cryptlib.c',
|
||||
'openssl/crypto/ctype.c',
|
||||
'openssl/crypto/der_writer.c',
|
||||
'openssl/crypto/ex_data.c',
|
||||
'openssl/crypto/initthread.c',
|
||||
'openssl/crypto/o_str.c',
|
||||
'openssl/crypto/packet.c',
|
||||
'openssl/crypto/param_build.c',
|
||||
'openssl/crypto/param_build_set.c',
|
||||
'openssl/crypto/params.c',
|
||||
'openssl/crypto/params_dup.c',
|
||||
'openssl/crypto/params_from_text.c',
|
||||
'openssl/crypto/provider_core.c',
|
||||
'openssl/crypto/provider_predefined.c',
|
||||
'openssl/crypto/riscvcap.c',
|
||||
'openssl/crypto/self_test_core.c',
|
||||
'openssl/crypto/sparse_array.c',
|
||||
'openssl/crypto/threads_lib.c',
|
||||
'openssl/crypto/threads_none.c',
|
||||
'openssl/crypto/threads_pthread.c',
|
||||
'openssl/crypto/threads_win.c',
|
||||
'openssl/crypto/time.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_encoders.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_key.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_key_compress.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_matrix.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_ntt.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_params.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_sample.c',
|
||||
'openssl/crypto/ml_dsa/ml_dsa_sign.c',
|
||||
'openssl/crypto/ml_kem/ml_kem.c',
|
||||
'openssl/crypto/modes/cbc128.c',
|
||||
'openssl/crypto/modes/ccm128.c',
|
||||
'openssl/crypto/modes/cfb128.c',
|
||||
'openssl/crypto/modes/ctr128.c',
|
||||
'openssl/crypto/modes/gcm128.c',
|
||||
'openssl/crypto/modes/ofb128.c',
|
||||
'openssl/crypto/modes/wrap128.c',
|
||||
'openssl/crypto/modes/xts128.c',
|
||||
'openssl/crypto/modes/xts128gb.c',
|
||||
'openssl/crypto/property/defn_cache.c',
|
||||
'openssl/crypto/property/property.c',
|
||||
'openssl/crypto/property/property_parse.c',
|
||||
'openssl/crypto/property/property_query.c',
|
||||
'openssl/crypto/property/property_string.c',
|
||||
'openssl/crypto/rand/rand_lib.c',
|
||||
'openssl/crypto/rsa/rsa_acvp_test_params.c',
|
||||
'openssl/crypto/rsa/rsa_backend.c',
|
||||
'openssl/crypto/rsa/rsa_chk.c',
|
||||
'openssl/crypto/rsa/rsa_crpt.c',
|
||||
'openssl/crypto/rsa/rsa_gen.c',
|
||||
'openssl/crypto/rsa/rsa_lib.c',
|
||||
'openssl/crypto/rsa/rsa_mp_names.c',
|
||||
'openssl/crypto/rsa/rsa_none.c',
|
||||
'openssl/crypto/rsa/rsa_oaep.c',
|
||||
'openssl/crypto/rsa/rsa_ossl.c',
|
||||
'openssl/crypto/rsa/rsa_pk1.c',
|
||||
'openssl/crypto/rsa/rsa_pss.c',
|
||||
'openssl/crypto/rsa/rsa_schemes.c',
|
||||
'openssl/crypto/rsa/rsa_sign.c',
|
||||
'openssl/crypto/rsa/rsa_sp800_56b_check.c',
|
||||
'openssl/crypto/rsa/rsa_sp800_56b_gen.c',
|
||||
'openssl/crypto/rsa/rsa_x931.c',
|
||||
'openssl/crypto/sha/keccak1600.c',
|
||||
'openssl/crypto/sha/sha1dgst.c',
|
||||
'openssl/crypto/sha/sha256.c',
|
||||
'openssl/crypto/sha/sha3.c',
|
||||
'openssl/crypto/sha/sha512.c',
|
||||
'openssl/crypto/sha/sha_riscv.c',
|
||||
'openssl/crypto/slh_dsa/slh_adrs.c',
|
||||
'openssl/crypto/slh_dsa/slh_dsa.c',
|
||||
'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c',
|
||||
'openssl/crypto/slh_dsa/slh_dsa_key.c',
|
||||
'openssl/crypto/slh_dsa/slh_fors.c',
|
||||
'openssl/crypto/slh_dsa/slh_hash.c',
|
||||
'openssl/crypto/slh_dsa/slh_hypertree.c',
|
||||
'openssl/crypto/slh_dsa/slh_params.c',
|
||||
'openssl/crypto/slh_dsa/slh_wots.c',
|
||||
'openssl/crypto/slh_dsa/slh_xmss.c',
|
||||
'openssl/crypto/stack/stack.c',
|
||||
'openssl/crypto/thread/arch/thread_none.c',
|
||||
'openssl/crypto/thread/arch/thread_posix.c',
|
||||
'openssl/crypto/thread/arch/thread_win.c',
|
||||
'openssl/crypto/thread/api.c',
|
||||
'openssl/crypto/thread/arch.c',
|
||||
'openssl/crypto/thread/internal.c',
|
||||
'openssl/providers/common/der/der_rsa_sig.c',
|
||||
'openssl/providers/common/bio_prov.c',
|
||||
'openssl/providers/common/capabilities.c',
|
||||
'openssl/providers/common/digest_to_nid.c',
|
||||
'openssl/providers/common/provider_seeding.c',
|
||||
'openssl/providers/common/provider_util.c',
|
||||
'openssl/providers/common/securitycheck.c',
|
||||
'openssl/providers/common/securitycheck_fips.c',
|
||||
'openssl/providers/fips/fipsindicator.c',
|
||||
'openssl/providers/fips/fipsprov.c',
|
||||
'openssl/providers/fips/self_test.c',
|
||||
'openssl/providers/fips/self_test_kats.c',
|
||||
'openssl/providers/implementations/asymciphers/rsa_enc.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_ccm.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_gcm.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_ocb.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_wrp.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_xts.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_cts.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_tdes.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_tdes_common.c',
|
||||
'openssl/providers/implementations/ciphers/cipher_tdes_hw.c',
|
||||
'openssl/providers/implementations/digests/sha2_prov.c',
|
||||
'openssl/providers/implementations/digests/sha3_prov.c',
|
||||
'openssl/providers/implementations/exchange/dh_exch.c',
|
||||
'openssl/providers/implementations/exchange/ecdh_exch.c',
|
||||
'openssl/providers/implementations/exchange/ecx_exch.c',
|
||||
'openssl/providers/implementations/exchange/kdf_exch.c',
|
||||
'openssl/providers/implementations/kdfs/hkdf.c',
|
||||
'openssl/providers/implementations/kdfs/kbkdf.c',
|
||||
'openssl/providers/implementations/kdfs/pbkdf2.c',
|
||||
'openssl/providers/implementations/kdfs/pbkdf2_fips.c',
|
||||
'openssl/providers/implementations/kdfs/sshkdf.c',
|
||||
'openssl/providers/implementations/kdfs/sskdf.c',
|
||||
'openssl/providers/implementations/kdfs/tls1_prf.c',
|
||||
'openssl/providers/implementations/kdfs/x942kdf.c',
|
||||
'openssl/providers/implementations/kem/ml_kem_kem.c',
|
||||
'openssl/providers/implementations/kem/mlx_kem.c',
|
||||
'openssl/providers/implementations/kem/rsa_kem.c',
|
||||
'openssl/providers/implementations/keymgmt/dh_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/dsa_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/ec_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/ecx_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/mlx_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/rsa_kmgmt.c',
|
||||
'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c',
|
||||
'openssl/providers/implementations/macs/cmac_prov.c',
|
||||
'openssl/providers/implementations/macs/gmac_prov.c',
|
||||
'openssl/providers/implementations/macs/hmac_prov.c',
|
||||
'openssl/providers/implementations/macs/kmac_prov.c',
|
||||
'openssl/providers/implementations/rands/drbg.c',
|
||||
'openssl/providers/implementations/rands/drbg_ctr.c',
|
||||
'openssl/providers/implementations/rands/drbg_hash.c',
|
||||
'openssl/providers/implementations/rands/drbg_hmac.c',
|
||||
'openssl/providers/implementations/rands/fips_crng_test.c',
|
||||
'openssl/providers/implementations/rands/test_rng.c',
|
||||
'openssl/providers/implementations/signature/dsa_sig.c',
|
||||
'openssl/providers/implementations/signature/ecdsa_sig.c',
|
||||
'openssl/providers/implementations/signature/eddsa_sig.c',
|
||||
'openssl/providers/implementations/signature/mac_legacy_sig.c',
|
||||
'openssl/providers/implementations/signature/ml_dsa_sig.c',
|
||||
'openssl/providers/implementations/signature/rsa_sig.c',
|
||||
'openssl/providers/implementations/signature/slh_dsa_sig.c',
|
||||
'openssl/providers/implementations/skeymgmt/aes_skmgmt.c',
|
||||
'openssl/providers/implementations/skeymgmt/generic.c',
|
||||
'openssl/ssl/record/methods/ssl3_cbc.c',
|
||||
'openssl/providers/common/der/der_dsa_key.c',
|
||||
'openssl/providers/common/der/der_dsa_sig.c',
|
||||
'openssl/providers/common/der/der_ec_key.c',
|
||||
'openssl/providers/common/der/der_ec_sig.c',
|
||||
'openssl/providers/common/der/der_ecx_key.c',
|
||||
'openssl/providers/common/der/der_ml_dsa_key.c',
|
||||
'openssl/providers/common/der/der_rsa_key.c',
|
||||
'openssl/providers/common/der/der_slh_dsa_key.c',
|
||||
'openssl/providers/common/provider_ctx.c',
|
||||
'openssl/providers/common/provider_err.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_block.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_ccm.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_gcm.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c',
|
||||
'openssl/providers/implementations/ciphers/ciphercommon_hw.c',
|
||||
'openssl/providers/implementations/digests/digestcommon.c',
|
||||
'openssl/ssl/record/methods/tls_pad.c',
|
||||
'openssl/providers/fips/fips_entry.c',
|
||||
|
||||
],
|
||||
'openssl_sources_linux64-riscv64': [
|
||||
'./config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/params_idx.c',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S',
|
||||
'./config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c',
|
||||
'./config/archs/linux64-riscv64/asm/providers/legacy.ld',
|
||||
'./config/archs/linux64-riscv64/asm/providers/fips.ld',
|
||||
|
||||
],
|
||||
'openssl_defines_linux64-riscv64': [
|
||||
'NDEBUG',
|
||||
'OPENSSL_USE_NODELETE',
|
||||
'OPENSSL_BUILDING_OPENSSL',
|
||||
'BROTLI',
|
||||
'ZLIB',
|
||||
'ZSTD',
|
||||
'AES_ASM',
|
||||
'FIPS_MODULE',
|
||||
'GHASH_ASM',
|
||||
'INCLUDE_C_SHA256',
|
||||
'INCLUDE_C_SHA512',
|
||||
'OPENSSL_CPUID_OBJ',
|
||||
'SHA256_ASM',
|
||||
'SHA512_ASM',
|
||||
'SM4_ASM',
|
||||
'FIPS_MODULE',
|
||||
],
|
||||
'openssl_cflags_linux64-riscv64': [
|
||||
'-Wa,--noexecstack',
|
||||
'-Wall -O3',
|
||||
'-pthread',
|
||||
'-Wall -O3',
|
||||
],
|
||||
'openssl_ex_libs_linux64-riscv64': [
|
||||
'-lm -ldl -pthread',
|
||||
],
|
||||
'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux64-riscv64/asm/providers/fips.ld'
|
||||
},
|
||||
'include_dirs': [
|
||||
'.',
|
||||
'./include',
|
||||
'./crypto',
|
||||
'./crypto/include/internal',
|
||||
'./providers/common/include',
|
||||
],
|
||||
'defines': ['<@(openssl_defines_linux64-riscv64)'],
|
||||
'cflags': ['<@(openssl_cflags_linux64-riscv64)'],
|
||||
'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'],
|
||||
'ldflags': ['-Wl,--version-script=<@(linker_script)'],
|
||||
'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'],
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': ['./include', '.'],
|
||||
'defines': ['<@(openssl_defines_linux64-riscv64)'],
|
||||
},
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
+162
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_digests_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_digests.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = {
|
||||
DER_OID_V_sigAlgs
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha1 OBJECT IDENTIFIER ::= { iso(1)
|
||||
* identified-organization(3) oiw(14)
|
||||
* secsig(3) algorithms(2) 26 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = {
|
||||
DER_OID_V_id_sha1
|
||||
};
|
||||
|
||||
/*
|
||||
* id-md2 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = {
|
||||
DER_OID_V_id_md2
|
||||
};
|
||||
|
||||
/*
|
||||
* id-md5 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = {
|
||||
DER_OID_V_id_md5
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = {
|
||||
DER_OID_V_id_sha256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = {
|
||||
DER_OID_V_id_sha384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = {
|
||||
DER_OID_V_id_sha512
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = {
|
||||
DER_OID_V_id_sha224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = {
|
||||
DER_OID_V_id_sha512_224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = {
|
||||
DER_OID_V_id_sha512_256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = {
|
||||
DER_OID_V_id_sha3_224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = {
|
||||
DER_OID_V_id_sha3_256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = {
|
||||
DER_OID_V_id_sha3_384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = {
|
||||
DER_OID_V_id_sha3_512
|
||||
};
|
||||
|
||||
/*
|
||||
* id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = {
|
||||
DER_OID_V_id_shake128
|
||||
};
|
||||
|
||||
/*
|
||||
* id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = {
|
||||
DER_OID_V_id_shake256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = {
|
||||
DER_OID_V_id_shake128_len
|
||||
};
|
||||
|
||||
/*
|
||||
* id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = {
|
||||
DER_OID_V_id_shake256_len
|
||||
};
|
||||
|
||||
/*
|
||||
* id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19}
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = {
|
||||
DER_OID_V_id_KMACWithSHAKE128
|
||||
};
|
||||
|
||||
/*
|
||||
* id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20}
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = {
|
||||
DER_OID_V_id_KMACWithSHAKE256
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_dsa_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/*
|
||||
* DSA low level APIs are deprecated for public use, but still ok for
|
||||
* internal use.
|
||||
*/
|
||||
#include "internal/deprecated.h"
|
||||
|
||||
#include "prov/der_dsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-dsa OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = {
|
||||
DER_OID_V_id_dsa
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha1 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = {
|
||||
DER_OID_V_id_dsa_with_sha1
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = {
|
||||
DER_OID_V_id_dsa_with_sha224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = {
|
||||
DER_OID_V_id_dsa_with_sha256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = {
|
||||
DER_OID_V_id_dsa_with_sha384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = {
|
||||
DER_OID_V_id_dsa_with_sha512
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = {
|
||||
DER_OID_V_id_dsa_with_sha3_224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = {
|
||||
DER_OID_V_id_dsa_with_sha3_256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = {
|
||||
DER_OID_V_id_dsa_with_sha3_384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = {
|
||||
DER_OID_V_id_dsa_with_sha3_512
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_ec_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_ec.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = {
|
||||
DER_OID_V_ecdsa_with_SHA1
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = {
|
||||
DER_OID_V_id_ecPublicKey
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = {
|
||||
DER_OID_V_c2pnb163v1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = {
|
||||
DER_OID_V_c2pnb163v2
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = {
|
||||
DER_OID_V_c2pnb163v3
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = {
|
||||
DER_OID_V_c2pnb176w1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = {
|
||||
DER_OID_V_c2tnb191v1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = {
|
||||
DER_OID_V_c2tnb191v2
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = {
|
||||
DER_OID_V_c2tnb191v3
|
||||
};
|
||||
|
||||
/*
|
||||
* c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = {
|
||||
DER_OID_V_c2onb191v4
|
||||
};
|
||||
|
||||
/*
|
||||
* c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = {
|
||||
DER_OID_V_c2onb191v5
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = {
|
||||
DER_OID_V_c2pnb208w1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = {
|
||||
DER_OID_V_c2tnb239v1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = {
|
||||
DER_OID_V_c2tnb239v2
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = {
|
||||
DER_OID_V_c2tnb239v3
|
||||
};
|
||||
|
||||
/*
|
||||
* c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = {
|
||||
DER_OID_V_c2onb239v4
|
||||
};
|
||||
|
||||
/*
|
||||
* c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = {
|
||||
DER_OID_V_c2onb239v5
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = {
|
||||
DER_OID_V_c2pnb272w1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = {
|
||||
DER_OID_V_c2pnb304w1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = {
|
||||
DER_OID_V_c2tnb359v1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = {
|
||||
DER_OID_V_c2pnb368w1
|
||||
};
|
||||
|
||||
/*
|
||||
* c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = {
|
||||
DER_OID_V_c2tnb431r1
|
||||
};
|
||||
|
||||
/*
|
||||
* prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = {
|
||||
DER_OID_V_prime192v1
|
||||
};
|
||||
|
||||
/*
|
||||
* prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = {
|
||||
DER_OID_V_prime192v2
|
||||
};
|
||||
|
||||
/*
|
||||
* prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = {
|
||||
DER_OID_V_prime192v3
|
||||
};
|
||||
|
||||
/*
|
||||
* prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = {
|
||||
DER_OID_V_prime239v1
|
||||
};
|
||||
|
||||
/*
|
||||
* prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = {
|
||||
DER_OID_V_prime239v2
|
||||
};
|
||||
|
||||
/*
|
||||
* prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = {
|
||||
DER_OID_V_prime239v3
|
||||
};
|
||||
|
||||
/*
|
||||
* prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = {
|
||||
DER_OID_V_prime256v1
|
||||
};
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = {
|
||||
DER_OID_V_ecdsa_with_SHA224
|
||||
};
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = {
|
||||
DER_OID_V_ecdsa_with_SHA256
|
||||
};
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = {
|
||||
DER_OID_V_ecdsa_with_SHA384
|
||||
};
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = {
|
||||
DER_OID_V_ecdsa_with_SHA512
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = {
|
||||
DER_OID_V_id_ecdsa_with_sha3_224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = {
|
||||
DER_OID_V_id_ecdsa_with_sha3_256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = {
|
||||
DER_OID_V_id_ecdsa_with_sha3_384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = {
|
||||
DER_OID_V_id_ecdsa_with_sha3_512
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_ecx_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_ecx.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = {
|
||||
DER_OID_V_id_X25519
|
||||
};
|
||||
|
||||
/*
|
||||
* id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = {
|
||||
DER_OID_V_id_X448
|
||||
};
|
||||
|
||||
/*
|
||||
* id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = {
|
||||
DER_OID_V_id_Ed25519
|
||||
};
|
||||
|
||||
/*
|
||||
* id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = {
|
||||
DER_OID_V_id_Ed448
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in
|
||||
*
|
||||
* Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_ml_dsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = {
|
||||
DER_OID_V_id_ml_dsa_44
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = {
|
||||
DER_OID_V_id_ml_dsa_65
|
||||
};
|
||||
|
||||
/*
|
||||
* id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = {
|
||||
DER_OID_V_id_ml_dsa_87
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_rsa_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_rsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = {
|
||||
DER_OID_V_hashAlgs
|
||||
};
|
||||
|
||||
/*
|
||||
* rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = {
|
||||
DER_OID_V_rsaEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = {
|
||||
DER_OID_V_id_RSAES_OAEP
|
||||
};
|
||||
|
||||
/*
|
||||
* id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = {
|
||||
DER_OID_V_id_pSpecified
|
||||
};
|
||||
|
||||
/*
|
||||
* id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = {
|
||||
DER_OID_V_id_RSASSA_PSS
|
||||
};
|
||||
|
||||
/*
|
||||
* md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = {
|
||||
DER_OID_V_md2WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = {
|
||||
DER_OID_V_md5WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = {
|
||||
DER_OID_V_sha1WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = {
|
||||
DER_OID_V_sha224WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = {
|
||||
DER_OID_V_sha256WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = {
|
||||
DER_OID_V_sha384WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = {
|
||||
DER_OID_V_sha512WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = {
|
||||
DER_OID_V_sha512_224WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = {
|
||||
DER_OID_V_sha512_256WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = {
|
||||
DER_OID_V_id_mgf1
|
||||
};
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = {
|
||||
DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224
|
||||
};
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = {
|
||||
DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256
|
||||
};
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = {
|
||||
DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384
|
||||
};
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = {
|
||||
DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512
|
||||
};
|
||||
|
||||
/*
|
||||
* md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = {
|
||||
DER_OID_V_md4WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= {
|
||||
* iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2
|
||||
* }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = {
|
||||
DER_OID_V_ripemd160WithRSAEncryption
|
||||
};
|
||||
|
||||
/*
|
||||
* mdc2WithRSASignature OBJECT IDENTIFIER ::= {
|
||||
* iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14)
|
||||
* }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = {
|
||||
DER_OID_V_mdc2WithRSASignature
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in
|
||||
*
|
||||
* Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_slh_dsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_128s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_128f
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_192s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_192f
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_256s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = {
|
||||
DER_OID_V_id_slh_dsa_sha2_256f
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = {
|
||||
DER_OID_V_id_slh_dsa_shake_128s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = {
|
||||
DER_OID_V_id_slh_dsa_shake_128f
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = {
|
||||
DER_OID_V_id_slh_dsa_shake_192s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = {
|
||||
DER_OID_V_id_slh_dsa_shake_192f
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = {
|
||||
DER_OID_V_id_slh_dsa_shake_256s
|
||||
};
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = {
|
||||
DER_OID_V_id_slh_dsa_shake_256f
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_sm2_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_sm2.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = {
|
||||
DER_OID_V_sm2_with_SM3
|
||||
};
|
||||
|
||||
/*
|
||||
* curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = {
|
||||
DER_OID_V_curveSM2
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/der/der_wrap_gen.c.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "prov/der_wrap.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6
|
||||
* }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = {
|
||||
DER_OID_V_id_alg_CMS3DESwrap
|
||||
};
|
||||
|
||||
/*
|
||||
* id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = {
|
||||
DER_OID_V_id_aes128_wrap
|
||||
};
|
||||
|
||||
/*
|
||||
* id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = {
|
||||
DER_OID_V_id_aes192_wrap
|
||||
};
|
||||
|
||||
/*
|
||||
* id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 }
|
||||
*/
|
||||
const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = {
|
||||
DER_OID_V_id_aes256_wrap
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_digests.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 }
|
||||
*/
|
||||
#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03
|
||||
#define DER_OID_SZ_sigAlgs 10
|
||||
extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs];
|
||||
|
||||
/*
|
||||
* id-sha1 OBJECT IDENTIFIER ::= { iso(1)
|
||||
* identified-organization(3) oiw(14)
|
||||
* secsig(3) algorithms(2) 26 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A
|
||||
#define DER_OID_SZ_id_sha1 7
|
||||
extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1];
|
||||
|
||||
/*
|
||||
* id-md2 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 }
|
||||
*/
|
||||
#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02
|
||||
#define DER_OID_SZ_id_md2 10
|
||||
extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2];
|
||||
|
||||
/*
|
||||
* id-md5 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 }
|
||||
*/
|
||||
#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05
|
||||
#define DER_OID_SZ_id_md5 10
|
||||
extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5];
|
||||
|
||||
/*
|
||||
* id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01
|
||||
#define DER_OID_SZ_id_sha256 11
|
||||
extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256];
|
||||
|
||||
/*
|
||||
* id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02
|
||||
#define DER_OID_SZ_id_sha384 11
|
||||
extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384];
|
||||
|
||||
/*
|
||||
* id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03
|
||||
#define DER_OID_SZ_id_sha512 11
|
||||
extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512];
|
||||
|
||||
/*
|
||||
* id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04
|
||||
#define DER_OID_SZ_id_sha224 11
|
||||
extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224];
|
||||
|
||||
/*
|
||||
* id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05
|
||||
#define DER_OID_SZ_id_sha512_224 11
|
||||
extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224];
|
||||
|
||||
/*
|
||||
* id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06
|
||||
#define DER_OID_SZ_id_sha512_256 11
|
||||
extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256];
|
||||
|
||||
/*
|
||||
* id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07
|
||||
#define DER_OID_SZ_id_sha3_224 11
|
||||
extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224];
|
||||
|
||||
/*
|
||||
* id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08
|
||||
#define DER_OID_SZ_id_sha3_256 11
|
||||
extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256];
|
||||
|
||||
/*
|
||||
* id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09
|
||||
#define DER_OID_SZ_id_sha3_384 11
|
||||
extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384];
|
||||
|
||||
/*
|
||||
* id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 }
|
||||
*/
|
||||
#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A
|
||||
#define DER_OID_SZ_id_sha3_512 11
|
||||
extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512];
|
||||
|
||||
/*
|
||||
* id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 }
|
||||
*/
|
||||
#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B
|
||||
#define DER_OID_SZ_id_shake128 11
|
||||
extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128];
|
||||
|
||||
/*
|
||||
* id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 }
|
||||
*/
|
||||
#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C
|
||||
#define DER_OID_SZ_id_shake256 11
|
||||
extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256];
|
||||
|
||||
/*
|
||||
* id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 }
|
||||
*/
|
||||
#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11
|
||||
#define DER_OID_SZ_id_shake128_len 11
|
||||
extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len];
|
||||
|
||||
/*
|
||||
* id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 }
|
||||
*/
|
||||
#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12
|
||||
#define DER_OID_SZ_id_shake256_len 11
|
||||
extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len];
|
||||
|
||||
/*
|
||||
* id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19}
|
||||
*/
|
||||
#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13
|
||||
#define DER_OID_SZ_id_KMACWithSHAKE128 11
|
||||
extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128];
|
||||
|
||||
/*
|
||||
* id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20}
|
||||
*/
|
||||
#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14
|
||||
#define DER_OID_SZ_id_KMACWithSHAKE256 11
|
||||
extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256];
|
||||
|
||||
/* clang-format on */
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_dsa.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-dsa OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01
|
||||
#define DER_OID_SZ_id_dsa 9
|
||||
extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha1 OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03
|
||||
#define DER_OID_SZ_id_dsa_with_sha1 9
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01
|
||||
#define DER_OID_SZ_id_dsa_with_sha224 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02
|
||||
#define DER_OID_SZ_id_dsa_with_sha256 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03
|
||||
#define DER_OID_SZ_id_dsa_with_sha384 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04
|
||||
#define DER_OID_SZ_id_dsa_with_sha512 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05
|
||||
#define DER_OID_SZ_id_dsa_with_sha3_224 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06
|
||||
#define DER_OID_SZ_id_dsa_with_sha3_256 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07
|
||||
#define DER_OID_SZ_id_dsa_with_sha3_384 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384];
|
||||
|
||||
/*
|
||||
* id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 }
|
||||
*/
|
||||
#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08
|
||||
#define DER_OID_SZ_id_dsa_with_sha3_512 11
|
||||
extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* Subject Public Key Info */
|
||||
int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa);
|
||||
/* Signature */
|
||||
int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag,
|
||||
DSA *dsa, int mdnid);
|
||||
+288
@@ -0,0 +1,288 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_ec.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "crypto/ec.h"
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 }
|
||||
*/
|
||||
#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01
|
||||
#define DER_OID_SZ_ecdsa_with_SHA1 9
|
||||
extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1];
|
||||
|
||||
/*
|
||||
* id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 }
|
||||
*/
|
||||
#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01
|
||||
#define DER_OID_SZ_id_ecPublicKey 9
|
||||
extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey];
|
||||
|
||||
/*
|
||||
* c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01
|
||||
#define DER_OID_SZ_c2pnb163v1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1];
|
||||
|
||||
/*
|
||||
* c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02
|
||||
#define DER_OID_SZ_c2pnb163v2 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2];
|
||||
|
||||
/*
|
||||
* c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03
|
||||
#define DER_OID_SZ_c2pnb163v3 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3];
|
||||
|
||||
/*
|
||||
* c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04
|
||||
#define DER_OID_SZ_c2pnb176w1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1];
|
||||
|
||||
/*
|
||||
* c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05
|
||||
#define DER_OID_SZ_c2tnb191v1 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1];
|
||||
|
||||
/*
|
||||
* c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06
|
||||
#define DER_OID_SZ_c2tnb191v2 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2];
|
||||
|
||||
/*
|
||||
* c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07
|
||||
#define DER_OID_SZ_c2tnb191v3 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3];
|
||||
|
||||
/*
|
||||
* c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 }
|
||||
*/
|
||||
#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08
|
||||
#define DER_OID_SZ_c2onb191v4 10
|
||||
extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4];
|
||||
|
||||
/*
|
||||
* c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 }
|
||||
*/
|
||||
#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09
|
||||
#define DER_OID_SZ_c2onb191v5 10
|
||||
extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5];
|
||||
|
||||
/*
|
||||
* c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A
|
||||
#define DER_OID_SZ_c2pnb208w1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1];
|
||||
|
||||
/*
|
||||
* c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B
|
||||
#define DER_OID_SZ_c2tnb239v1 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1];
|
||||
|
||||
/*
|
||||
* c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C
|
||||
#define DER_OID_SZ_c2tnb239v2 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2];
|
||||
|
||||
/*
|
||||
* c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D
|
||||
#define DER_OID_SZ_c2tnb239v3 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3];
|
||||
|
||||
/*
|
||||
* c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 }
|
||||
*/
|
||||
#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E
|
||||
#define DER_OID_SZ_c2onb239v4 10
|
||||
extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4];
|
||||
|
||||
/*
|
||||
* c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 }
|
||||
*/
|
||||
#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F
|
||||
#define DER_OID_SZ_c2onb239v5 10
|
||||
extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5];
|
||||
|
||||
/*
|
||||
* c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10
|
||||
#define DER_OID_SZ_c2pnb272w1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1];
|
||||
|
||||
/*
|
||||
* c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11
|
||||
#define DER_OID_SZ_c2pnb304w1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1];
|
||||
|
||||
/*
|
||||
* c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12
|
||||
#define DER_OID_SZ_c2tnb359v1 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1];
|
||||
|
||||
/*
|
||||
* c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 }
|
||||
*/
|
||||
#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13
|
||||
#define DER_OID_SZ_c2pnb368w1 10
|
||||
extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1];
|
||||
|
||||
/*
|
||||
* c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 }
|
||||
*/
|
||||
#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14
|
||||
#define DER_OID_SZ_c2tnb431r1 10
|
||||
extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1];
|
||||
|
||||
/*
|
||||
* prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 }
|
||||
*/
|
||||
#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01
|
||||
#define DER_OID_SZ_prime192v1 10
|
||||
extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1];
|
||||
|
||||
/*
|
||||
* prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 }
|
||||
*/
|
||||
#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02
|
||||
#define DER_OID_SZ_prime192v2 10
|
||||
extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2];
|
||||
|
||||
/*
|
||||
* prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 }
|
||||
*/
|
||||
#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03
|
||||
#define DER_OID_SZ_prime192v3 10
|
||||
extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3];
|
||||
|
||||
/*
|
||||
* prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 }
|
||||
*/
|
||||
#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04
|
||||
#define DER_OID_SZ_prime239v1 10
|
||||
extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1];
|
||||
|
||||
/*
|
||||
* prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 }
|
||||
*/
|
||||
#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05
|
||||
#define DER_OID_SZ_prime239v2 10
|
||||
extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2];
|
||||
|
||||
/*
|
||||
* prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 }
|
||||
*/
|
||||
#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06
|
||||
#define DER_OID_SZ_prime239v3 10
|
||||
extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3];
|
||||
|
||||
/*
|
||||
* prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 }
|
||||
*/
|
||||
#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07
|
||||
#define DER_OID_SZ_prime256v1 10
|
||||
extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1];
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 }
|
||||
*/
|
||||
#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01
|
||||
#define DER_OID_SZ_ecdsa_with_SHA224 10
|
||||
extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224];
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 }
|
||||
*/
|
||||
#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02
|
||||
#define DER_OID_SZ_ecdsa_with_SHA256 10
|
||||
extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256];
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 }
|
||||
*/
|
||||
#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03
|
||||
#define DER_OID_SZ_ecdsa_with_SHA384 10
|
||||
extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384];
|
||||
|
||||
/*
|
||||
* ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
|
||||
* us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 }
|
||||
*/
|
||||
#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04
|
||||
#define DER_OID_SZ_ecdsa_with_SHA512 10
|
||||
extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512];
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 }
|
||||
*/
|
||||
#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09
|
||||
#define DER_OID_SZ_id_ecdsa_with_sha3_224 11
|
||||
extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224];
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 }
|
||||
*/
|
||||
#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A
|
||||
#define DER_OID_SZ_id_ecdsa_with_sha3_256 11
|
||||
extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256];
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 }
|
||||
*/
|
||||
#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B
|
||||
#define DER_OID_SZ_id_ecdsa_with_sha3_384 11
|
||||
extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384];
|
||||
|
||||
/*
|
||||
* id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 }
|
||||
*/
|
||||
#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C
|
||||
#define DER_OID_SZ_id_ecdsa_with_sha3_512 11
|
||||
extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* Subject Public Key Info */
|
||||
int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec);
|
||||
/* Signature */
|
||||
int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont,
|
||||
EC_KEY *ec, int mdnid);
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_ecx.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
#include "crypto/ecx.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 }
|
||||
*/
|
||||
#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E
|
||||
#define DER_OID_SZ_id_X25519 5
|
||||
extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519];
|
||||
|
||||
/*
|
||||
* id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 }
|
||||
*/
|
||||
#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F
|
||||
#define DER_OID_SZ_id_X448 5
|
||||
extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448];
|
||||
|
||||
/*
|
||||
* id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 }
|
||||
*/
|
||||
#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70
|
||||
#define DER_OID_SZ_id_Ed25519 5
|
||||
extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519];
|
||||
|
||||
/*
|
||||
* id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 }
|
||||
*/
|
||||
#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71
|
||||
#define DER_OID_SZ_id_Ed448 5
|
||||
extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec);
|
||||
int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec);
|
||||
int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec);
|
||||
int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec);
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in
|
||||
*
|
||||
* Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
#include "crypto/ml_dsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 }
|
||||
*/
|
||||
#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11
|
||||
#define DER_OID_SZ_id_ml_dsa_44 11
|
||||
extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44];
|
||||
|
||||
/*
|
||||
* id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 }
|
||||
*/
|
||||
#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12
|
||||
#define DER_OID_SZ_id_ml_dsa_65 11
|
||||
extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65];
|
||||
|
||||
/*
|
||||
* id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 }
|
||||
*/
|
||||
#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13
|
||||
#define DER_OID_SZ_id_ml_dsa_87 11
|
||||
extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key);
|
||||
+189
@@ -0,0 +1,189 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_rsa.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "crypto/rsa.h"
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 }
|
||||
*/
|
||||
#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02
|
||||
#define DER_OID_SZ_hashAlgs 10
|
||||
extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs];
|
||||
|
||||
/*
|
||||
* rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
|
||||
*/
|
||||
#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01
|
||||
#define DER_OID_SZ_rsaEncryption 11
|
||||
extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption];
|
||||
|
||||
/*
|
||||
* id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }
|
||||
*/
|
||||
#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07
|
||||
#define DER_OID_SZ_id_RSAES_OAEP 11
|
||||
extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP];
|
||||
|
||||
/*
|
||||
* id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 }
|
||||
*/
|
||||
#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09
|
||||
#define DER_OID_SZ_id_pSpecified 11
|
||||
extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified];
|
||||
|
||||
/*
|
||||
* id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }
|
||||
*/
|
||||
#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A
|
||||
#define DER_OID_SZ_id_RSASSA_PSS 11
|
||||
extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS];
|
||||
|
||||
/*
|
||||
* md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 }
|
||||
*/
|
||||
#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02
|
||||
#define DER_OID_SZ_md2WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 }
|
||||
*/
|
||||
#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04
|
||||
#define DER_OID_SZ_md5WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 }
|
||||
*/
|
||||
#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05
|
||||
#define DER_OID_SZ_sha1WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 }
|
||||
*/
|
||||
#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E
|
||||
#define DER_OID_SZ_sha224WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 }
|
||||
*/
|
||||
#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B
|
||||
#define DER_OID_SZ_sha256WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 }
|
||||
*/
|
||||
#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C
|
||||
#define DER_OID_SZ_sha384WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 }
|
||||
*/
|
||||
#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D
|
||||
#define DER_OID_SZ_sha512WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 }
|
||||
*/
|
||||
#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F
|
||||
#define DER_OID_SZ_sha512_224WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 }
|
||||
*/
|
||||
#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10
|
||||
#define DER_OID_SZ_sha512_256WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
|
||||
*/
|
||||
#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08
|
||||
#define DER_OID_SZ_id_mgf1 11
|
||||
extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1];
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 }
|
||||
*/
|
||||
#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D
|
||||
#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11
|
||||
extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224];
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 }
|
||||
*/
|
||||
#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E
|
||||
#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11
|
||||
extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256];
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 }
|
||||
*/
|
||||
#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F
|
||||
#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11
|
||||
extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384];
|
||||
|
||||
/*
|
||||
* id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 }
|
||||
*/
|
||||
#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10
|
||||
#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11
|
||||
extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512];
|
||||
|
||||
/*
|
||||
* md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 }
|
||||
*/
|
||||
#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03
|
||||
#define DER_OID_SZ_md4WithRSAEncryption 11
|
||||
extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= {
|
||||
* iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2
|
||||
* }
|
||||
*/
|
||||
#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02
|
||||
#define DER_OID_SZ_ripemd160WithRSAEncryption 8
|
||||
extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption];
|
||||
|
||||
/*
|
||||
* mdc2WithRSASignature OBJECT IDENTIFIER ::= {
|
||||
* iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14)
|
||||
* }
|
||||
*/
|
||||
#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E
|
||||
#define DER_OID_SZ_mdc2WithRSASignature 7
|
||||
extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* PSS parameters */
|
||||
int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag,
|
||||
const RSA_PSS_PARAMS_30 *pss);
|
||||
/* Subject Public Key Info */
|
||||
int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa);
|
||||
int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag,
|
||||
int rsa_type,
|
||||
const RSA_PSS_PARAMS_30 *pss);
|
||||
/* Signature */
|
||||
int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag,
|
||||
int mdnid);
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in
|
||||
*
|
||||
* Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
#include "crypto/slh_dsa.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_128s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_128f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_192s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_192f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_256s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19
|
||||
#define DER_OID_SZ_id_slh_dsa_sha2_256f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_128s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_128f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_192s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_192f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_256s 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s];
|
||||
|
||||
/*
|
||||
* id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 }
|
||||
*/
|
||||
#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F
|
||||
#define DER_OID_SZ_id_slh_dsa_shake_256f 11
|
||||
extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key);
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_sm2.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "crypto/ec.h"
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 }
|
||||
*/
|
||||
#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75
|
||||
#define DER_OID_SZ_sm2_with_SM3 10
|
||||
extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3];
|
||||
|
||||
/*
|
||||
* curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 }
|
||||
*/
|
||||
#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D
|
||||
#define DER_OID_SZ_curveSM2 10
|
||||
extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2];
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
/* Subject Public Key Info */
|
||||
int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec);
|
||||
/* Signature */
|
||||
int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont,
|
||||
EC_KEY *ec, int mdnid);
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from providers/common/include/prov/der_wrap.h.in
|
||||
*
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "internal/der.h"
|
||||
|
||||
/* Well known OIDs precompiled */
|
||||
/* clang-format off */
|
||||
|
||||
/*
|
||||
* id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= {
|
||||
* iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6
|
||||
* }
|
||||
*/
|
||||
#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06
|
||||
#define DER_OID_SZ_id_alg_CMS3DESwrap 13
|
||||
extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap];
|
||||
|
||||
/*
|
||||
* id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 }
|
||||
*/
|
||||
#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05
|
||||
#define DER_OID_SZ_id_aes128_wrap 11
|
||||
extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap];
|
||||
|
||||
/*
|
||||
* id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 }
|
||||
*/
|
||||
#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19
|
||||
#define DER_OID_SZ_id_aes192_wrap 11
|
||||
extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap];
|
||||
|
||||
/*
|
||||
* id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 }
|
||||
*/
|
||||
#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D
|
||||
#define DER_OID_SZ_id_aes256_wrap 11
|
||||
extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap];
|
||||
|
||||
/* clang-format on */
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
global:
|
||||
OSSL_provider_init;
|
||||
local: *;
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
global:
|
||||
OSSL_provider_init;
|
||||
local: *;
|
||||
};
|
||||
@@ -0,0 +1,404 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by apps/progs.pl
|
||||
*
|
||||
* Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include "progs.h"
|
||||
|
||||
FUNCTION functions[] = {
|
||||
{FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL},
|
||||
{FT_general, "ca", ca_main, ca_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CMP
|
||||
{FT_general, "cmp", cmp_main, cmp_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CMS
|
||||
{FT_general, "cms", cms_main, cms_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "crl", crl_main, crl_options, NULL, NULL},
|
||||
{FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL},
|
||||
{FT_general, "dgst", dgst_main, dgst_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_DH
|
||||
{FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "dsa", dsa_main, dsa_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
{FT_general, "ec", ec_main, ec_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
{FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "enc", enc_main, enc_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
{FT_general, "engine", engine_main, engine_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "errstr", errstr_main, errstr_options, NULL, NULL},
|
||||
{FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
{FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
{FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "help", help_main, help_options, NULL, NULL},
|
||||
{FT_general, "info", info_main, info_options, NULL, NULL},
|
||||
{FT_general, "kdf", kdf_main, kdf_options, NULL, NULL},
|
||||
{FT_general, "list", list_main, list_options, NULL, NULL},
|
||||
{FT_general, "mac", mac_main, mac_options, NULL, NULL},
|
||||
{FT_general, "nseq", nseq_main, nseq_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_OCSP
|
||||
{FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "passwd", passwd_main, passwd_options, NULL, NULL},
|
||||
{FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL},
|
||||
{FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL},
|
||||
{FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL},
|
||||
{FT_general, "pkey", pkey_main, pkey_options, NULL, NULL},
|
||||
{FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL},
|
||||
{FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL},
|
||||
{FT_general, "prime", prime_main, prime_options, NULL, NULL},
|
||||
{FT_general, "rand", rand_main, rand_options, NULL, NULL},
|
||||
{FT_general, "rehash", rehash_main, rehash_options, NULL, NULL},
|
||||
{FT_general, "req", req_main, req_options, NULL, NULL},
|
||||
{FT_general, "rsa", rsa_main, rsa_options, NULL, NULL},
|
||||
#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA)
|
||||
{FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_client", s_client_main, s_client_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_server", s_server_main, s_server_options, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
{FT_general, "s_time", s_time_main, s_time_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL},
|
||||
{FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL},
|
||||
{FT_general, "smime", smime_main, smime_options, NULL, NULL},
|
||||
{FT_general, "speed", speed_main, speed_options, NULL, NULL},
|
||||
{FT_general, "spkac", spkac_main, spkac_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_SRP
|
||||
{FT_general, "srp", srp_main, srp_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_TS
|
||||
{FT_general, "ts", ts_main, ts_options, NULL, NULL},
|
||||
#endif
|
||||
{FT_general, "verify", verify_main, verify_options, NULL, NULL},
|
||||
{FT_general, "version", version_main, version_options, NULL, NULL},
|
||||
{FT_general, "x509", x509_main, x509_options, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_MD2
|
||||
{FT_md, "md2", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_MD4
|
||||
{FT_md, "md4", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
{FT_md, "md5", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha1", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha384", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512-224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha512-256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-224", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-256", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-384", dgst_main, NULL, NULL},
|
||||
{FT_md, "sha3-512", dgst_main, NULL, NULL},
|
||||
{FT_md, "shake128", dgst_main, NULL, NULL},
|
||||
{FT_md, "shake256", dgst_main, NULL, NULL},
|
||||
#ifndef OPENSSL_NO_MDC2
|
||||
{FT_md, "mdc2", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RMD160
|
||||
{FT_md, "rmd160", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BLAKE2
|
||||
{FT_md, "blake2b512", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BLAKE2
|
||||
{FT_md, "blake2s256", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM3
|
||||
{FT_md, "sm3", dgst_main, NULL, NULL},
|
||||
#endif
|
||||
{FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL},
|
||||
{FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL},
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ARIA
|
||||
{FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
{FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
{FT_cipher, "base64", enc_main, enc_options, NULL},
|
||||
#ifndef OPENSSL_NO_ZLIB
|
||||
{FT_cipher, "zlib", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BROTLI
|
||||
{FT_cipher, "brotli", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ZSTD
|
||||
{FT_cipher, "zstd", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des3", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "desx", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
{FT_cipher, "rc4", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
{FT_cipher, "rc4-40", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DES
|
||||
{FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
{FT_cipher, "idea-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SEED
|
||||
{FT_cipher, "seed-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
{FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_BF
|
||||
{FT_cipher, "bf-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast5-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
{FT_cipher, "cast-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC5
|
||||
{FT_cipher, "rc5-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-cbc", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ecb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-cfb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ofb", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
{FT_cipher, "sm4-ctr", enc_main, enc_options, NULL},
|
||||
#endif
|
||||
{0, NULL, NULL, NULL, NULL}
|
||||
};
|
||||
File diff suppressed because it is too large.
Load diff
+694
@@ -0,0 +1,694 @@
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zkne_encrypt
|
||||
.type rv64i_zkne_encrypt,@function
|
||||
rv64i_zkne_encrypt:
|
||||
addi sp,sp,-16
|
||||
sd x8,8(sp)
|
||||
sd x9,0(sp)
|
||||
|
||||
# Load input to block cipher
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
|
||||
# Load key
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
|
||||
# Load number of rounds
|
||||
lwu x30,240(x12)
|
||||
|
||||
# initial transformation
|
||||
xor x6,x6,x13
|
||||
xor x7,x7,x14
|
||||
|
||||
# The main loop only executes the first N-1 rounds.
|
||||
add x30,x30,-1
|
||||
|
||||
# Do Nr - 1 rounds (final round is special)
|
||||
1:
|
||||
.word 913507379
|
||||
.word 912491699
|
||||
|
||||
# Update key ptr to point to next key in schedule
|
||||
add x12,x12,16
|
||||
|
||||
# Grab next key in schedule
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
add x30,x30,-1
|
||||
bgtz x30,1b
|
||||
|
||||
# final round
|
||||
.word 846398515
|
||||
.word 845382835
|
||||
|
||||
# since not added 16 before
|
||||
ld x13,16(x12)
|
||||
ld x14,24(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
sd x6,0(x11)
|
||||
sd x7,8(x11)
|
||||
|
||||
# Pop registers and return
|
||||
ld x8,8(sp)
|
||||
ld x9,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zknd_decrypt
|
||||
.type rv64i_zknd_decrypt,@function
|
||||
rv64i_zknd_decrypt:
|
||||
addi sp,sp,-16
|
||||
sd x8,8(sp)
|
||||
sd x9,0(sp)
|
||||
|
||||
# Load input to block cipher
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
|
||||
# Load number of rounds
|
||||
lwu x30,240(x12)
|
||||
|
||||
# Load the last key
|
||||
slli x13,x30,4
|
||||
add x12,x12,x13
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
|
||||
xor x6,x6,x13
|
||||
xor x7,x7,x14
|
||||
|
||||
# The main loop only executes the first N-1 rounds.
|
||||
add x30,x30,-1
|
||||
|
||||
# Do Nr - 1 rounds (final round is special)
|
||||
1:
|
||||
.word 1047725107
|
||||
.word 1046709427
|
||||
|
||||
# Update key ptr to point to next key in schedule
|
||||
add x12,x12,-16
|
||||
|
||||
# Grab next key in schedule
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
add x30,x30,-1
|
||||
bgtz x30,1b
|
||||
|
||||
# final round
|
||||
.word 980616243
|
||||
.word 979600563
|
||||
|
||||
add x12,x12,-16
|
||||
ld x13,0(x12)
|
||||
ld x14,8(x12)
|
||||
xor x6,x8,x13
|
||||
xor x7,x9,x14
|
||||
|
||||
sd x6,0(x11)
|
||||
sd x7,8(x11)
|
||||
# Pop registers and return
|
||||
ld x8,8(sp)
|
||||
ld x9,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zkne_set_encrypt_key
|
||||
.type rv64i_zkne_set_encrypt_key,@function
|
||||
rv64i_zkne_set_encrypt_key:
|
||||
addi sp,sp,-16
|
||||
sd x8,0(sp)
|
||||
# Determine number of rounds from key size in bits
|
||||
li x6,128
|
||||
bne x11,x6,1f
|
||||
li x7,10 # key->rounds = 10 if bits == 128
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 822318099
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 823366675
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 824415251
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 825463827
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 826512403
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 827560979
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 828609555
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 829658131
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 830706707
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 831755283
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
1:
|
||||
li x6,192
|
||||
bne x11,x6,2f
|
||||
li x7,12 # key->rounds = 12 if bits == 192
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 822351507
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 823400083
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 824448659
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 825497235
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 826545811
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 827594387
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 828642963
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
.word 2122548275
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
.word 829691539
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
2:
|
||||
li x7,14 # key->rounds = 14 if bits == 256
|
||||
li x6,256
|
||||
beq x11,x6,3f
|
||||
li a0,-2 # If bits != 128, 192, or 256, return -2
|
||||
j 5f
|
||||
3:
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
ld x13,24(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 822515475
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 823564051
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 824612627
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 825661203
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 826709779
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 827758355
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
sd x8,16(x12)
|
||||
sd x13,24(x12)
|
||||
.word 828806931
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
4: # return 0
|
||||
li a0,0
|
||||
5: # return a0
|
||||
ld x8,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
.text
|
||||
.balign 16
|
||||
.globl rv64i_zknd_set_decrypt_key
|
||||
.type rv64i_zknd_set_decrypt_key,@function
|
||||
rv64i_zknd_set_decrypt_key:
|
||||
addi sp,sp,-16
|
||||
sd x8,0(sp)
|
||||
# Determine number of rounds from key size in bits
|
||||
li x6,128
|
||||
bne x11,x6,1f
|
||||
li x7,10 # key->rounds = 10 if bits == 128
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 822318099
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 823366675
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 824415251
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 825463827
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 826512403
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 827560979
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 828609555
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 829658131
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 830706707
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
.word 805508115
|
||||
sd x8,0(x12)
|
||||
.word 805540883
|
||||
sd x8,8(x12)
|
||||
.word 831755283
|
||||
.word 2120483635
|
||||
.word 2121466803
|
||||
add x12,x12,16
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
1:
|
||||
li x6,192
|
||||
bne x11,x6,2f
|
||||
li x7,12 # key->rounds = 12 if bits == 192
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 822351507
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 823400083
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 824448659
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 825497235
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 826545811
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 827594387
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 828642963
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
.word 805508755
|
||||
sd x13,0(x12)
|
||||
.word 805541523
|
||||
sd x13,8(x12)
|
||||
# the reason is in ke192enc
|
||||
.word 2122548275
|
||||
.word 805574291
|
||||
sd x13,16(x12)
|
||||
.word 829691539
|
||||
.word 2120647475
|
||||
.word 2121466803
|
||||
add x12,x12,24
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
|
||||
j 4f
|
||||
2:
|
||||
li x7,14 # key->rounds = 14 if bits == 256
|
||||
li x6,256
|
||||
beq x11,x6,3f
|
||||
li a0,-2 # If bits != 128, 192, or 256, return -2
|
||||
j 5f
|
||||
3:
|
||||
sw x7,240(x12) # store key->rounds
|
||||
ld x6,0(x10)
|
||||
ld x7,8(x10)
|
||||
ld x8,16(x10)
|
||||
ld x13,24(x10)
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 822515475
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 823564051
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 824612627
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 825661203
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 826709779
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 827758355
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
.word 832804627
|
||||
.word 2122777651
|
||||
.word 2127824563
|
||||
.word 805508883
|
||||
sd x14,0(x12)
|
||||
.word 805541651
|
||||
sd x14,8(x12)
|
||||
.word 805574419
|
||||
sd x14,16(x12)
|
||||
.word 805738259
|
||||
sd x14,24(x12)
|
||||
.word 828806931
|
||||
.word 2120680243
|
||||
.word 2121466803
|
||||
add x12,x12,32
|
||||
sd x6,0(x12)
|
||||
sd x7,8(x12)
|
||||
# last two one dropped
|
||||
|
||||
4: # return 0
|
||||
li a0,0
|
||||
5: # return a0
|
||||
ld x8,0(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
Vendored
+943
@@ -0,0 +1,943 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt
|
||||
.type rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,@function
|
||||
rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt:
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a4)
|
||||
.word 3439489111
|
||||
.word 34074119
|
||||
.word 34041479
|
||||
.word 2815667831
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
1:
|
||||
.word 34041479
|
||||
.word 2815503991
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
bnez t0, 1b
|
||||
.word 34041479
|
||||
.word 2815536759
|
||||
|
||||
|
||||
# aes block size is 16
|
||||
andi a6, a2, 15
|
||||
mv t3, a2
|
||||
beqz a6, 1f
|
||||
sub a2, a2, a6
|
||||
addi t3, a2, -16
|
||||
1:
|
||||
# We make the `LENGTH` become e32 length here.
|
||||
srli t4, a2, 2
|
||||
srli t3, t3, 2
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 10
|
||||
beq t0, t1, aes_xts_enc_256
|
||||
beq t0, t2, aes_xts_enc_128
|
||||
.size rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt
|
||||
.p2align 3
|
||||
aes_xts_enc_128:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Lenc_blocks_128:
|
||||
.word 221182167
|
||||
# load plaintext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store ciphertext
|
||||
.word 221147223
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
sub t3, t3, a7
|
||||
|
||||
bnez t4, .Lenc_blocks_128
|
||||
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# slidedown second to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# ciphertext
|
||||
.word 1065929815
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
.word 3439489111
|
||||
.word 1577848023
|
||||
|
||||
# load last block into v24
|
||||
# note: We should load the last block before store the second to last block
|
||||
# for in-place operation.
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577074263
|
||||
.word 3355504727
|
||||
.word 1577242199
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2747836535
|
||||
.word 1258565207
|
||||
|
||||
# store second to last block
|
||||
.word 201879639
|
||||
.word 33918119
|
||||
|
||||
|
||||
# xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store last block ciphertext
|
||||
addi a1, a1, -16
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_enc_128,.-aes_xts_enc_128
|
||||
.p2align 3
|
||||
aes_xts_enc_256:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Lenc_blocks_256:
|
||||
.word 221182167
|
||||
# load plaintext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store ciphertext
|
||||
.word 221147223
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
sub t3, t3, a7
|
||||
|
||||
bnez t4, .Lenc_blocks_256
|
||||
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# slidedown second to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# ciphertext
|
||||
.word 1065929815
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
.word 3439489111
|
||||
.word 1577848023
|
||||
|
||||
# load last block into v24
|
||||
# note: We should load the last block before store the second to last block
|
||||
# for in-place operation.
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577074263
|
||||
.word 3355504727
|
||||
.word 1577242199
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2747836535
|
||||
.word 1258565207
|
||||
|
||||
# store second to last block
|
||||
.word 201879639
|
||||
.word 33918119
|
||||
|
||||
|
||||
# xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store last block ciphertext
|
||||
addi a1, a1, -16
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_enc_256,.-aes_xts_enc_256
|
||||
.p2align 3
|
||||
.globl rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt
|
||||
.type rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,@function
|
||||
rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt:
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a4)
|
||||
.word 3439489111
|
||||
.word 34074119
|
||||
.word 34041479
|
||||
.word 2815667831
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
1:
|
||||
.word 34041479
|
||||
.word 2815503991
|
||||
addi t0, t0, -1
|
||||
addi a4, a4, 16
|
||||
bnez t0, 1b
|
||||
.word 34041479
|
||||
.word 2815536759
|
||||
|
||||
|
||||
# aes block size is 16
|
||||
andi a6, a2, 15
|
||||
beqz a6, 1f
|
||||
sub a2, a2, a6
|
||||
addi a2, a2, -16
|
||||
1:
|
||||
# We make the `LENGTH` become e32 length here.
|
||||
srli t4, a2, 2
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 10
|
||||
beq t0, t1, aes_xts_dec_256
|
||||
beq t0, t2, aes_xts_dec_128
|
||||
.size rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt
|
||||
.p2align 3
|
||||
aes_xts_dec_128:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
|
||||
beqz t4, 2f
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Ldec_blocks_128:
|
||||
.word 221182167
|
||||
# load ciphertext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store plaintext
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t4, .Ldec_blocks_128
|
||||
|
||||
2:
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# load second to last block's ciphertext
|
||||
.word 3439489111
|
||||
.word 33909767
|
||||
addi a0, a0, 16
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577073239
|
||||
.word 3355504727
|
||||
.word 1577241175
|
||||
|
||||
beqz a2, 1f
|
||||
# slidedown third to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565207
|
||||
|
||||
# compute IV for second to last block
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
j 2f
|
||||
1:
|
||||
# compute IV for second to last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
2:
|
||||
|
||||
|
||||
## xts second to last block
|
||||
.word 3439489111
|
||||
.word 797871191
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797871191
|
||||
.word 1577848023
|
||||
|
||||
# load last block ciphertext
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# store second to last block plaintext
|
||||
addi t0, a1, 16
|
||||
.word 33721511
|
||||
|
||||
## xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2796792951
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store second to last block plaintext
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_dec_128,.-aes_xts_dec_128
|
||||
.p2align 3
|
||||
aes_xts_dec_256:
|
||||
# load input
|
||||
.word 221182167
|
||||
.word 33909767
|
||||
|
||||
li t0, 5
|
||||
# We could simplify the initialization steps if we have `block<=1`.
|
||||
blt t4, t0, 1f
|
||||
|
||||
# Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses
|
||||
# different order of coefficients. We should use`vbrev8` to reverse the
|
||||
# data when we use `vgmul`.
|
||||
.word 3439489111
|
||||
.word 1271144535
|
||||
.word 221179991
|
||||
.word 1577072727
|
||||
# v16: [r-IV0, r-IV0, ...]
|
||||
.word 2785257591
|
||||
|
||||
# Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8.
|
||||
slli t0, t4, 2
|
||||
.word 218296407
|
||||
# v2: [`1`, `1`, `1`, `1`, ...]
|
||||
.word 1577103703
|
||||
# v3: [`0`, `1`, `2`, `3`, ...]
|
||||
.word 1376297431
|
||||
.word 227733591
|
||||
# v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...]
|
||||
.word 1243816535
|
||||
# v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...]
|
||||
.word 1244865367
|
||||
slli t0, t4, 1
|
||||
.word 219344983
|
||||
# v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...]
|
||||
.word 3594716247
|
||||
|
||||
# Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16
|
||||
.word 221179991
|
||||
.word 1250174039
|
||||
.word 2726865015
|
||||
|
||||
# Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28.
|
||||
# Reverse the bits order back.
|
||||
.word 1258565207
|
||||
|
||||
# Prepare the x^n multiplier in v20. The `n` is the aes-xts block number
|
||||
# in a LMUL=4 register group.
|
||||
# n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4))
|
||||
# = (VLEN/32)
|
||||
# We could use vsetvli with `e32, m1` to compute the `n` number.
|
||||
.word 218133207
|
||||
li t1, 1
|
||||
sll t0, t1, t0
|
||||
.word 3447812183
|
||||
.word 1577070679
|
||||
.word 3380670551
|
||||
.word 1577238615
|
||||
.word 3447812183
|
||||
.word 1241784407
|
||||
.word 221179991
|
||||
.word 1577073239
|
||||
.word 2785258103
|
||||
|
||||
j 2f
|
||||
1:
|
||||
.word 3439489111
|
||||
.word 1271146583
|
||||
2:
|
||||
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
|
||||
beqz t4, 2f
|
||||
|
||||
.word 221182167
|
||||
j 1f
|
||||
|
||||
.Ldec_blocks_256:
|
||||
.word 221182167
|
||||
# load ciphertext into v24
|
||||
.word 33909767
|
||||
# update iv
|
||||
.word 2739447927
|
||||
# reverse the iv's bits order back
|
||||
.word 1258565207
|
||||
1:
|
||||
.word 797838423
|
||||
slli t0, a7, 2
|
||||
sub t4, t4, a7
|
||||
add a0, a0, t0
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store plaintext
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t4, .Ldec_blocks_256
|
||||
|
||||
2:
|
||||
bnez a6, 1f
|
||||
ret
|
||||
1:
|
||||
# load second to last block's ciphertext
|
||||
.word 3439489111
|
||||
.word 33909767
|
||||
addi a0, a0, 16
|
||||
|
||||
# setup `x` multiplier with byte-reversed order
|
||||
# 0b00000010 => 0b01000000 (0x40)
|
||||
li t0, 0x40
|
||||
.word 3439489111
|
||||
.word 1577073239
|
||||
.word 3355504727
|
||||
.word 1577241175
|
||||
|
||||
beqz a2, 1f
|
||||
# slidedown third to last block
|
||||
addi a7, a7, -4
|
||||
.word 3441586263
|
||||
# multiplier
|
||||
.word 1057540183
|
||||
|
||||
# compute IV for last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565207
|
||||
|
||||
# compute IV for second to last block
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
j 2f
|
||||
1:
|
||||
# compute IV for second to last block
|
||||
.word 3439489111
|
||||
.word 2739447927
|
||||
.word 1258565335
|
||||
2:
|
||||
|
||||
|
||||
## xts second to last block
|
||||
.word 3439489111
|
||||
.word 797871191
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797871191
|
||||
.word 1577848023
|
||||
|
||||
# load last block ciphertext
|
||||
.word 134770775
|
||||
.word 33885191
|
||||
|
||||
# store second to last block plaintext
|
||||
addi t0, a1, 16
|
||||
.word 33721511
|
||||
|
||||
## xts last block
|
||||
.word 3439489111
|
||||
.word 797838423
|
||||
.word 2800987255
|
||||
.word 2799709303
|
||||
.word 2798660727
|
||||
.word 2797612151
|
||||
.word 2796563575
|
||||
.word 2795514999
|
||||
.word 2794466423
|
||||
.word 2793417847
|
||||
.word 2792369271
|
||||
.word 2791320695
|
||||
.word 2790272119
|
||||
.word 2789223543
|
||||
.word 2788174967
|
||||
.word 2787126391
|
||||
.word 2786110583
|
||||
|
||||
.word 797838423
|
||||
|
||||
# store second to last block plaintext
|
||||
.word 33942567
|
||||
|
||||
ret
|
||||
.size aes_xts_dec_256,.-aes_xts_dec_256
|
||||
+326
@@ -0,0 +1,326 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvkb_zvkned_ctr32_encrypt_blocks
|
||||
.type rv64i_zvkb_zvkned_ctr32_encrypt_blocks,@function
|
||||
rv64i_zvkb_zvkned_ctr32_encrypt_blocks:
|
||||
beqz a2, 1f
|
||||
|
||||
# Load number of rounds
|
||||
lwu t0, 240(a3)
|
||||
li t1, 14
|
||||
li t2, 12
|
||||
li t3, 10
|
||||
|
||||
slli t5, a2, 2
|
||||
|
||||
beq t0, t1, ctr32_encrypt_blocks_256
|
||||
beq t0, t2, ctr32_encrypt_blocks_192
|
||||
beq t0, t3, ctr32_encrypt_blocks_128
|
||||
|
||||
1:
|
||||
ret
|
||||
|
||||
.size rv64i_zvkb_zvkned_ctr32_encrypt_blocks,.-rv64i_zvkb_zvkned_ctr32_encrypt_blocks
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_128:
|
||||
# Load all 11 round keys to v1-v11 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796661879
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_128,.-ctr32_encrypt_blocks_128
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_192:
|
||||
# Load all 13 round keys to v1-v13 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798759031
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_192,.-ctr32_encrypt_blocks_192
|
||||
.p2align 3
|
||||
ctr32_encrypt_blocks_256:
|
||||
# Load all 15 round keys to v1-v15 registers.
|
||||
.word 3439489111
|
||||
.word 34005127
|
||||
addi a3, a3, 16
|
||||
.word 34005255
|
||||
addi a3, a3, 16
|
||||
.word 34005383
|
||||
addi a3, a3, 16
|
||||
.word 34005511
|
||||
addi a3, a3, 16
|
||||
.word 34005639
|
||||
addi a3, a3, 16
|
||||
.word 34005767
|
||||
addi a3, a3, 16
|
||||
.word 34005895
|
||||
addi a3, a3, 16
|
||||
.word 34006023
|
||||
addi a3, a3, 16
|
||||
.word 34006151
|
||||
addi a3, a3, 16
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
|
||||
# Setup mask into v0
|
||||
# The mask pattern for 4*N-th elements
|
||||
# mask v0: [000100010001....]
|
||||
# Note:
|
||||
# We could setup the mask just for the maximum element length instead of
|
||||
# the VLMAX.
|
||||
li t0, 0b10001000
|
||||
.word 201356247
|
||||
.word 1577238615
|
||||
# Load IV.
|
||||
# v31:[IV0, IV1, IV2, big-endian count]
|
||||
.word 3439489111
|
||||
.word 34041735
|
||||
# Convert the big-endian counter into little-endian.
|
||||
.word 3305271383
|
||||
.word 1240772567
|
||||
# Splat the IV to v16
|
||||
.word 221212759
|
||||
.word 1577072727
|
||||
.word 2817763447
|
||||
# Prepare the ctr pattern into v20
|
||||
# v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...]
|
||||
.word 1342712407
|
||||
# v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...]
|
||||
.word 86998743
|
||||
.word 17434711
|
||||
|
||||
|
||||
##### AES body
|
||||
j 2f
|
||||
1:
|
||||
.word 86998743
|
||||
# Increase ctr in v16.
|
||||
.word 17811543
|
||||
2:
|
||||
# Load plaintext into v20
|
||||
.word 33909255
|
||||
slli t0, t4, 2
|
||||
srli t6, t4, 2
|
||||
sub t5, t5, t4
|
||||
add a0, a0, t0
|
||||
# Prepare the AES ctr input into v24.
|
||||
# The ctr data uses big-endian form.
|
||||
.word 1577585751
|
||||
.word 1233431639
|
||||
|
||||
.word 2786307191
|
||||
.word 2787191927
|
||||
.word 2788240503
|
||||
.word 2789289079
|
||||
.word 2790337655
|
||||
.word 2791386231
|
||||
.word 2792434807
|
||||
.word 2793483383
|
||||
.word 2794531959
|
||||
.word 2795580535
|
||||
.word 2796629111
|
||||
.word 2797677687
|
||||
.word 2798726263
|
||||
.word 2799774839
|
||||
.word 2800856183
|
||||
|
||||
# ciphertext
|
||||
.word 797576279
|
||||
|
||||
# Store the ciphertext.
|
||||
.word 33942567
|
||||
add a1, a1, t0
|
||||
|
||||
bnez t5, 1b
|
||||
|
||||
ret
|
||||
.size ctr32_encrypt_blocks_256,.-ctr32_encrypt_blocks_256
|
||||
+1390
File diff suppressed because it is too large.
Load diff
+1871
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by util/mkbuildinf.pl
|
||||
*
|
||||
* Copyright 2014-2025 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#define PLATFORM "platform: linux64-riscv64"
|
||||
#define DATE "built on: Tue Jun 30 04:16:04 2026 UTC"
|
||||
|
||||
/*
|
||||
* Generate compiler_flags as an array of individual characters. This is a
|
||||
* workaround for the situation where CFLAGS gets too long for a C90 string
|
||||
* literal
|
||||
*/
|
||||
static const char compiler_flags[] = {
|
||||
'c','o','m','p','i','l','e','r',':',' ','.','.','/','c','o','n',
|
||||
'f','i','g','/','f','a','k','e','_','g','c','c','.','p','l',' ',
|
||||
'-','f','P','I','C',' ','-','p','t','h','r','e','a','d',' ','-',
|
||||
'W','a',',','-','-','n','o','e','x','e','c','s','t','a','c','k',
|
||||
' ','-','W','a','l','l',' ','-','O','3',' ','-','D','O','P','E',
|
||||
'N','S','S','L','_','U','S','E','_','N','O','D','E','L','E','T',
|
||||
'E',' ','-','D','O','P','E','N','S','S','L','_','P','I','C',' ',
|
||||
'-','D','O','P','E','N','S','S','L','_','B','U','I','L','D','I',
|
||||
'N','G','_','O','P','E','N','S','S','L',' ','-','D','B','R','O',
|
||||
'T','L','I',' ','-','D','Z','L','I','B',' ','-','D','Z','S','T',
|
||||
'D',' ','-','D','N','D','E','B','U','G',' ','-','I','.','.','/',
|
||||
'.','.','/','b','r','o','t','l','i','/','c','/','i','n','c','l',
|
||||
'u','d','e',' ','-','I','.','.','/','.','.','/','z','l','i','b',
|
||||
' ','-','I','.','.','/','.','.','/','z','s','t','d','/','l','i',
|
||||
'b','\0'
|
||||
};
|
||||
Vendored
+461
@@ -0,0 +1,461 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ChaCha20_ctr32_v_zbb_zvkb
|
||||
.type ChaCha20_ctr32_v_zbb_zvkb,@function
|
||||
ChaCha20_ctr32_v_zbb_zvkb:
|
||||
addi sp, sp, -96
|
||||
sd s0, 0(sp)
|
||||
sd s1, 8(sp)
|
||||
sd s2, 16(sp)
|
||||
sd s3, 24(sp)
|
||||
sd s4, 32(sp)
|
||||
sd s5, 40(sp)
|
||||
sd s6, 48(sp)
|
||||
sd s7, 56(sp)
|
||||
sd s8, 64(sp)
|
||||
sd s9, 72(sp)
|
||||
sd s10, 80(sp)
|
||||
sd s11, 88(sp)
|
||||
addi sp, sp, -64
|
||||
|
||||
lw t2, 0(a4)
|
||||
|
||||
.Lblock_loop:
|
||||
# We will use the scalar ALU for 1 chacha block.
|
||||
srli t3, a2, 6
|
||||
.word 219050839
|
||||
slli t4, t1, 6
|
||||
bltu t4, a2, 1f
|
||||
# Since there is no more chacha block existed, we need to split 1 block
|
||||
# from vector ALU.
|
||||
addi t4, t1, -1
|
||||
.word 219083607
|
||||
1:
|
||||
|
||||
#### chacha block data
|
||||
# init chacha const states into v0~v3
|
||||
# "expa" little endian
|
||||
li a5, 0x61707865
|
||||
.word 1577566295
|
||||
# "nd 3" little endian
|
||||
li a6, 0x3320646e
|
||||
.word 1577599191
|
||||
# "2-by" little endian
|
||||
li a7, 0x79622d32
|
||||
.word 1577632087
|
||||
# "te k" little endian
|
||||
li s0, 0x6b206574
|
||||
lw s1, 0(a3)
|
||||
.word 1577337303
|
||||
|
||||
# init chacha key states into v4~v11
|
||||
lw s2, 4(a3)
|
||||
.word 1577370199
|
||||
lw s3, 8(a3)
|
||||
.word 1577665239
|
||||
lw s4, 12(a3)
|
||||
.word 1577698135
|
||||
lw s5, 16(a3)
|
||||
.word 1577731031
|
||||
lw s6, 20(a3)
|
||||
.word 1577763927
|
||||
lw s7, 24(a3)
|
||||
.word 1577796823
|
||||
lw s8, 28(a3)
|
||||
.word 1577829719
|
||||
.word 1577862615
|
||||
|
||||
# init chacha key states into v12~v13
|
||||
lw s10, 4(a4)
|
||||
.word 1376298583
|
||||
lw s11, 8(a4)
|
||||
.word 46384727
|
||||
lw t0, 12(a4)
|
||||
.word 1577928407
|
||||
add s9, t2, t1
|
||||
|
||||
# init chacha nonce states into v14~v15
|
||||
.word 1577961303
|
||||
.word 1577240535
|
||||
|
||||
li t3, 64
|
||||
# load the top-half of input data into v16~v23
|
||||
.word 3955615751
|
||||
|
||||
# till now in block_loop, we used:
|
||||
# - v0~v15 for chacha states.
|
||||
# - v16~v23 for top-half of input data.
|
||||
# - v24~v31 haven't been used yet.
|
||||
|
||||
# 20 round groups
|
||||
li t3, 10
|
||||
.Lround_loop:
|
||||
# we can use v24~v31 as temporary registers in round_loop.
|
||||
addi t3, t3, -1
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 1388852823
|
||||
.word 1628232859
|
||||
.word 1389901527
|
||||
.word 1628265755
|
||||
.word 1390950231
|
||||
.word 1628298651
|
||||
.word 1391998935
|
||||
.word 1627574939
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 1380594263
|
||||
.word 1631900827
|
||||
.word 1381642967
|
||||
.word 1632196891
|
||||
.word 1382691671
|
||||
.word 1632229787
|
||||
.word 1383740375
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 1389114967
|
||||
.word 1636621467
|
||||
.word 1390163671
|
||||
.word 1636654363
|
||||
.word 1391212375
|
||||
.word 1636687259
|
||||
.word 1392261079
|
||||
.word 1635963547
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 1380758103
|
||||
.word 1637143707
|
||||
.word 1381806807
|
||||
.word 1637439771
|
||||
.word 1382855511
|
||||
.word 1637472667
|
||||
.word 1383904215
|
||||
.word 1637505563
|
||||
|
||||
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 1390950231
|
||||
.word 1628298651
|
||||
.word 1391998935
|
||||
.word 1627574939
|
||||
.word 1388852823
|
||||
.word 1628232859
|
||||
.word 1389901527
|
||||
.word 1628265755
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 1380594263
|
||||
.word 1631900827
|
||||
.word 1381642967
|
||||
.word 1632196891
|
||||
.word 1382691671
|
||||
.word 1632229787
|
||||
.word 1383740375
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 1391212375
|
||||
.word 1636687259
|
||||
.word 1392261079
|
||||
.word 1635963547
|
||||
.word 1389114967
|
||||
.word 1636621467
|
||||
.word 1390163671
|
||||
.word 1636654363
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 1380758103
|
||||
.word 1637143707
|
||||
.word 1381806807
|
||||
.word 1637439771
|
||||
.word 1382855511
|
||||
.word 1637472667
|
||||
.word 1383904215
|
||||
.word 1637505563
|
||||
|
||||
|
||||
bnez t3, .Lround_loop
|
||||
|
||||
li t3, 64
|
||||
# load the bottom-half of input data into v24~v31
|
||||
addi t4, a1, 32
|
||||
.word 3956206599
|
||||
|
||||
# now, there are no free vector registers until the round_loop exits.
|
||||
|
||||
# add chacha top-half initial block states
|
||||
# "expa" little endian
|
||||
li t3, 0x61707865
|
||||
.word 34488407
|
||||
add a5, a5, t3
|
||||
# "nd 3" little endian
|
||||
li t4, 0x3320646e
|
||||
.word 35569879
|
||||
add a6, a6, t4
|
||||
lw t3, 0(a3)
|
||||
# "2-by" little endian
|
||||
li t5, 0x79622d32
|
||||
.word 36651351
|
||||
add a7, a7, t5
|
||||
lw t4, 4(a3)
|
||||
# "te k" little endian
|
||||
li t6, 0x6b206574
|
||||
.word 37732823
|
||||
add s0, s0, t6
|
||||
lw t5, 8(a3)
|
||||
.word 38683223
|
||||
add s1, s1, t3
|
||||
lw t6, 12(a3)
|
||||
.word 39764695
|
||||
add s2, s2, t4
|
||||
.word 40846167
|
||||
add s3, s3, t5
|
||||
.word 41927639
|
||||
add s4, s4, t6
|
||||
|
||||
# xor with the top-half input
|
||||
.word 788531287
|
||||
sw a5, 0(sp)
|
||||
sw a6, 4(sp)
|
||||
.word 789612759
|
||||
sw a7, 8(sp)
|
||||
sw s0, 12(sp)
|
||||
.word 790694231
|
||||
sw s1, 16(sp)
|
||||
sw s2, 20(sp)
|
||||
.word 791775703
|
||||
sw s3, 24(sp)
|
||||
sw s4, 28(sp)
|
||||
.word 792857175
|
||||
lw t3, 16(a3)
|
||||
.word 793938647
|
||||
lw t4, 20(a3)
|
||||
.word 795020119
|
||||
lw t5, 24(a3)
|
||||
.word 796101591
|
||||
|
||||
# save the top-half of output from v16~v23
|
||||
li t6, 64
|
||||
.word 3958728743
|
||||
|
||||
# add chacha bottom-half initial block states
|
||||
.word 42878039
|
||||
add s5, s5, t3
|
||||
lw t6, 28(a3)
|
||||
.word 43959511
|
||||
add s6, s6, t4
|
||||
lw t3, 4(a4)
|
||||
.word 45040983
|
||||
add s7, s7, t5
|
||||
lw t4, 8(a4)
|
||||
.word 46122455
|
||||
add s8, s8, t6
|
||||
lw t5, 12(a4)
|
||||
.word 1376297047
|
||||
add s9, s9, t2
|
||||
.word 46384727
|
||||
add s9, s9, t1
|
||||
.word 48121559
|
||||
add s10, s10, t3
|
||||
.word 49203031
|
||||
add s11, s11, t4
|
||||
.word 50284503
|
||||
add t0, t0, t5
|
||||
.word 46138967
|
||||
# xor with the bottom-half input
|
||||
.word 797183063
|
||||
sw s5, 32(sp)
|
||||
.word 798264535
|
||||
sw s6, 36(sp)
|
||||
.word 799346007
|
||||
sw s7, 40(sp)
|
||||
.word 800427479
|
||||
sw s8, 44(sp)
|
||||
.word 802590423
|
||||
sw s9, 48(sp)
|
||||
.word 801508951
|
||||
sw s10, 52(sp)
|
||||
.word 803671895
|
||||
sw s11, 56(sp)
|
||||
.word 804753367
|
||||
sw t0, 60(sp)
|
||||
|
||||
# save the bottom-half of output from v24~v31
|
||||
li t3, 64
|
||||
addi t4, a0, 32
|
||||
.word 3956206631
|
||||
|
||||
# the computed vector parts: `64 * VL`
|
||||
slli t3, t1, 6
|
||||
|
||||
add a1, a1, t3
|
||||
add a0, a0, t3
|
||||
sub a2, a2, t3
|
||||
add t2, t2, t1
|
||||
|
||||
# process the scalar data block
|
||||
addi t2, t2, 1
|
||||
li t3, 64
|
||||
.word 197549747
|
||||
sub a2, a2, t4
|
||||
mv t5, sp
|
||||
.Lscalar_data_loop:
|
||||
.word 205452119
|
||||
# from this on, vector registers are grouped with lmul = 8
|
||||
.word 33915911
|
||||
.word 34539527
|
||||
.word 780665943
|
||||
.word 33883175
|
||||
add a1, a1, t1
|
||||
add a0, a0, t1
|
||||
add t5, t5, t1
|
||||
sub t4, t4, t1
|
||||
bnez t4, .Lscalar_data_loop
|
||||
|
||||
bnez a2, .Lblock_loop
|
||||
|
||||
addi sp, sp, 64
|
||||
ld s0, 0(sp)
|
||||
ld s1, 8(sp)
|
||||
ld s2, 16(sp)
|
||||
ld s3, 24(sp)
|
||||
ld s4, 32(sp)
|
||||
ld s5, 40(sp)
|
||||
ld s6, 48(sp)
|
||||
ld s7, 56(sp)
|
||||
ld s8, 64(sp)
|
||||
ld s9, 72(sp)
|
||||
ld s10, 80(sp)
|
||||
ld s11, 88(sp)
|
||||
addi sp, sp, 96
|
||||
|
||||
ret
|
||||
.size ChaCha20_ctr32_v_zbb_zvkb,.-ChaCha20_ctr32_v_zbb_zvkb
|
||||
+525
@@ -0,0 +1,525 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ChaCha20_ctr32_v_zbb
|
||||
.type ChaCha20_ctr32_v_zbb,@function
|
||||
ChaCha20_ctr32_v_zbb:
|
||||
addi sp, sp, -96
|
||||
sd s0, 0(sp)
|
||||
sd s1, 8(sp)
|
||||
sd s2, 16(sp)
|
||||
sd s3, 24(sp)
|
||||
sd s4, 32(sp)
|
||||
sd s5, 40(sp)
|
||||
sd s6, 48(sp)
|
||||
sd s7, 56(sp)
|
||||
sd s8, 64(sp)
|
||||
sd s9, 72(sp)
|
||||
sd s10, 80(sp)
|
||||
sd s11, 88(sp)
|
||||
addi sp, sp, -64
|
||||
|
||||
lw t2, 0(a4)
|
||||
|
||||
.Lblock_loop:
|
||||
# We will use the scalar ALU for 1 chacha block.
|
||||
srli t3, a2, 6
|
||||
.word 219050839
|
||||
slli t4, t1, 6
|
||||
bltu t4, a2, 1f
|
||||
# Since there is no more chacha block existed, we need to split 1 block
|
||||
# from vector ALU.
|
||||
addi t4, t1, -1
|
||||
.word 219083607
|
||||
1:
|
||||
|
||||
#### chacha block data
|
||||
# init chacha const states into v0~v3
|
||||
# "expa" little endian
|
||||
li a5, 0x61707865
|
||||
.word 1577566295
|
||||
# "nd 3" little endian
|
||||
li a6, 0x3320646e
|
||||
.word 1577599191
|
||||
# "2-by" little endian
|
||||
li a7, 0x79622d32
|
||||
.word 1577632087
|
||||
# "te k" little endian
|
||||
li s0, 0x6b206574
|
||||
lw s1, 0(a3)
|
||||
.word 1577337303
|
||||
|
||||
# init chacha key states into v4~v11
|
||||
lw s2, 4(a3)
|
||||
.word 1577370199
|
||||
lw s3, 8(a3)
|
||||
.word 1577665239
|
||||
lw s4, 12(a3)
|
||||
.word 1577698135
|
||||
lw s5, 16(a3)
|
||||
.word 1577731031
|
||||
lw s6, 20(a3)
|
||||
.word 1577763927
|
||||
lw s7, 24(a3)
|
||||
.word 1577796823
|
||||
lw s8, 28(a3)
|
||||
.word 1577829719
|
||||
.word 1577862615
|
||||
|
||||
# init chacha key states into v12~v13
|
||||
lw s10, 4(a4)
|
||||
.word 1376298583
|
||||
lw s11, 8(a4)
|
||||
.word 46384727
|
||||
lw t0, 12(a4)
|
||||
.word 1577928407
|
||||
add s9, t2, t1
|
||||
|
||||
# init chacha nonce states into v14~v15
|
||||
.word 1577961303
|
||||
.word 1577240535
|
||||
|
||||
li t3, 64
|
||||
# load the top-half of input data into v16~v23
|
||||
.word 3955615751
|
||||
|
||||
# till now in block_loop, we used:
|
||||
# - v0~v15 for chacha states.
|
||||
# - v16~v23 for top-half of input data.
|
||||
# - v24~v31 haven't been used yet.
|
||||
|
||||
# 20 round groups
|
||||
li t3, 10
|
||||
.Lround_loop:
|
||||
# we can use v24~v31 as temporary registers in round_loop.
|
||||
addi t3, t3, -1
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 2529705047
|
||||
.word 2530753751
|
||||
.word 2531802455
|
||||
.word 2532851159
|
||||
.word 2731030103
|
||||
.word 2732078807
|
||||
.word 2733127511
|
||||
.word 2734176215
|
||||
.word 718014039
|
||||
.word 1628232859
|
||||
.word 719095511
|
||||
.word 1628265755
|
||||
.word 720176983
|
||||
.word 1628298651
|
||||
.word 721258455
|
||||
.word 1627574939
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 2521185367
|
||||
.word 2522234071
|
||||
.word 2523282775
|
||||
.word 2524331479
|
||||
.word 2722771543
|
||||
.word 2723820247
|
||||
.word 2724868951
|
||||
.word 2725917655
|
||||
.word 709624407
|
||||
.word 1631900827
|
||||
.word 710705879
|
||||
.word 1632196891
|
||||
.word 711787351
|
||||
.word 1632229787
|
||||
.word 712868823
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 33685591
|
||||
add a5, a5, s1
|
||||
.word 34767063
|
||||
add a6, a6, s2
|
||||
.word 35848535
|
||||
add a7, a7, s3
|
||||
.word 36930007
|
||||
add s0, s0, s4
|
||||
.word 784336471
|
||||
xor s9, s9, a5
|
||||
.word 785417943
|
||||
xor s10, s10, a6
|
||||
.word 786499415
|
||||
xor s11, s11, a7
|
||||
.word 787580887
|
||||
xor t0, t0, s0
|
||||
.word 2529442903
|
||||
.word 2530491607
|
||||
.word 2531540311
|
||||
.word 2532589015
|
||||
.word 2731292247
|
||||
.word 2732340951
|
||||
.word 2733389655
|
||||
.word 2734438359
|
||||
.word 718014039
|
||||
.word 1636621467
|
||||
.word 719095511
|
||||
.word 1636654363
|
||||
.word 720176983
|
||||
.word 1636687259
|
||||
.word 721258455
|
||||
.word 1635963547
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 42337367
|
||||
add s5, s5, s9
|
||||
.word 43418839
|
||||
add s6, s6, s10
|
||||
.word 44500311
|
||||
add s7, s7, s11
|
||||
.word 45581783
|
||||
add s8, s8, t0
|
||||
.word 776208983
|
||||
xor s1, s1, s5
|
||||
.word 777290455
|
||||
xor s2, s2, s6
|
||||
.word 778371927
|
||||
xor s3, s3, s7
|
||||
.word 779453399
|
||||
xor s4, s4, s8
|
||||
.word 2521021527
|
||||
.word 2522070231
|
||||
.word 2523118935
|
||||
.word 2524167639
|
||||
.word 2722935383
|
||||
.word 2723984087
|
||||
.word 2725032791
|
||||
.word 2726081495
|
||||
.word 709624407
|
||||
.word 1637143707
|
||||
.word 710705879
|
||||
.word 1637439771
|
||||
.word 711787351
|
||||
.word 1637472667
|
||||
.word 712868823
|
||||
.word 1637505563
|
||||
|
||||
|
||||
# a += b; d ^= a; d <<<= 16;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 2531802199
|
||||
.word 2532850903
|
||||
.word 2529705303
|
||||
.word 2530754007
|
||||
.word 2733127511
|
||||
.word 2734176215
|
||||
.word 2731030103
|
||||
.word 2732078807
|
||||
.word 720111447
|
||||
.word 1628298651
|
||||
.word 721192919
|
||||
.word 1627574939
|
||||
.word 718079575
|
||||
.word 1628232859
|
||||
.word 719161047
|
||||
.word 1628265755
|
||||
|
||||
# c += d; b ^= c; b <<<= 12;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 2521185367
|
||||
.word 2522234071
|
||||
.word 2523282775
|
||||
.word 2524331479
|
||||
.word 2722771543
|
||||
.word 2723820247
|
||||
.word 2724868951
|
||||
.word 2725917655
|
||||
.word 709624407
|
||||
.word 1631900827
|
||||
.word 710705879
|
||||
.word 1632196891
|
||||
.word 711787351
|
||||
.word 1632229787
|
||||
.word 712868823
|
||||
.word 1632262683
|
||||
|
||||
# a += b; d ^= a; d <<<= 8;
|
||||
.word 36831703
|
||||
add s0, s0, s1
|
||||
.word 33718359
|
||||
add a5, a5, s2
|
||||
.word 34799831
|
||||
add a6, a6, s3
|
||||
.word 35881303
|
||||
add a7, a7, s4
|
||||
.word 786532183
|
||||
xor s11, s11, s0
|
||||
.word 787482583
|
||||
xor t0, t0, a5
|
||||
.word 784369239
|
||||
xor s9, s9, a6
|
||||
.word 785450711
|
||||
xor s10, s10, a7
|
||||
.word 2531540055
|
||||
.word 2532588759
|
||||
.word 2529443159
|
||||
.word 2530491863
|
||||
.word 2733389655
|
||||
.word 2734438359
|
||||
.word 2731292247
|
||||
.word 2732340951
|
||||
.word 720111447
|
||||
.word 1636687259
|
||||
.word 721192919
|
||||
.word 1635963547
|
||||
.word 718079575
|
||||
.word 1636621467
|
||||
.word 719161047
|
||||
.word 1636654363
|
||||
|
||||
# c += d; b ^= c; b <<<= 7;
|
||||
.word 43451607
|
||||
add s6, s6, s11
|
||||
.word 44533079
|
||||
add s7, s7, t0
|
||||
.word 45483479
|
||||
add s8, s8, s9
|
||||
.word 42370135
|
||||
add s5, s5, s10
|
||||
.word 776241751
|
||||
xor s1, s1, s6
|
||||
.word 777323223
|
||||
xor s2, s2, s7
|
||||
.word 778404695
|
||||
xor s3, s3, s8
|
||||
.word 779355095
|
||||
xor s4, s4, s5
|
||||
.word 2521021527
|
||||
.word 2522070231
|
||||
.word 2523118935
|
||||
.word 2524167639
|
||||
.word 2722935383
|
||||
.word 2723984087
|
||||
.word 2725032791
|
||||
.word 2726081495
|
||||
.word 709624407
|
||||
.word 1637143707
|
||||
.word 710705879
|
||||
.word 1637439771
|
||||
.word 711787351
|
||||
.word 1637472667
|
||||
.word 712868823
|
||||
.word 1637505563
|
||||
|
||||
|
||||
bnez t3, .Lround_loop
|
||||
|
||||
li t3, 64
|
||||
# load the bottom-half of input data into v24~v31
|
||||
addi t4, a1, 32
|
||||
.word 3956206599
|
||||
|
||||
# now, there are no free vector registers until the round_loop exits.
|
||||
|
||||
# add chacha top-half initial block states
|
||||
# "expa" little endian
|
||||
li t3, 0x61707865
|
||||
.word 34488407
|
||||
add a5, a5, t3
|
||||
# "nd 3" little endian
|
||||
li t4, 0x3320646e
|
||||
.word 35569879
|
||||
add a6, a6, t4
|
||||
lw t3, 0(a3)
|
||||
# "2-by" little endian
|
||||
li t5, 0x79622d32
|
||||
.word 36651351
|
||||
add a7, a7, t5
|
||||
lw t4, 4(a3)
|
||||
# "te k" little endian
|
||||
li t6, 0x6b206574
|
||||
.word 37732823
|
||||
add s0, s0, t6
|
||||
lw t5, 8(a3)
|
||||
.word 38683223
|
||||
add s1, s1, t3
|
||||
lw t6, 12(a3)
|
||||
.word 39764695
|
||||
add s2, s2, t4
|
||||
.word 40846167
|
||||
add s3, s3, t5
|
||||
.word 41927639
|
||||
add s4, s4, t6
|
||||
|
||||
# xor with the top-half input
|
||||
.word 788531287
|
||||
sw a5, 0(sp)
|
||||
sw a6, 4(sp)
|
||||
.word 789612759
|
||||
sw a7, 8(sp)
|
||||
sw s0, 12(sp)
|
||||
.word 790694231
|
||||
sw s1, 16(sp)
|
||||
sw s2, 20(sp)
|
||||
.word 791775703
|
||||
sw s3, 24(sp)
|
||||
sw s4, 28(sp)
|
||||
.word 792857175
|
||||
lw t3, 16(a3)
|
||||
.word 793938647
|
||||
lw t4, 20(a3)
|
||||
.word 795020119
|
||||
lw t5, 24(a3)
|
||||
.word 796101591
|
||||
|
||||
# save the top-half of output from v16~v23
|
||||
li t6, 64
|
||||
.word 3958728743
|
||||
|
||||
# add chacha bottom-half initial block states
|
||||
.word 42878039
|
||||
add s5, s5, t3
|
||||
lw t6, 28(a3)
|
||||
.word 43959511
|
||||
add s6, s6, t4
|
||||
lw t3, 4(a4)
|
||||
.word 45040983
|
||||
add s7, s7, t5
|
||||
lw t4, 8(a4)
|
||||
.word 46122455
|
||||
add s8, s8, t6
|
||||
lw t5, 12(a4)
|
||||
.word 1376297047
|
||||
add s9, s9, t2
|
||||
.word 46384727
|
||||
add s9, s9, t1
|
||||
.word 48121559
|
||||
add s10, s10, t3
|
||||
.word 49203031
|
||||
add s11, s11, t4
|
||||
.word 50284503
|
||||
add t0, t0, t5
|
||||
.word 46138967
|
||||
# xor with the bottom-half input
|
||||
.word 797183063
|
||||
sw s5, 32(sp)
|
||||
.word 798264535
|
||||
sw s6, 36(sp)
|
||||
.word 799346007
|
||||
sw s7, 40(sp)
|
||||
.word 800427479
|
||||
sw s8, 44(sp)
|
||||
.word 802590423
|
||||
sw s9, 48(sp)
|
||||
.word 801508951
|
||||
sw s10, 52(sp)
|
||||
.word 803671895
|
||||
sw s11, 56(sp)
|
||||
.word 804753367
|
||||
sw t0, 60(sp)
|
||||
|
||||
# save the bottom-half of output from v24~v31
|
||||
li t3, 64
|
||||
addi t4, a0, 32
|
||||
.word 3956206631
|
||||
|
||||
# the computed vector parts: `64 * VL`
|
||||
slli t3, t1, 6
|
||||
|
||||
add a1, a1, t3
|
||||
add a0, a0, t3
|
||||
sub a2, a2, t3
|
||||
add t2, t2, t1
|
||||
|
||||
# process the scalar data block
|
||||
addi t2, t2, 1
|
||||
li t3, 64
|
||||
.word 197549747
|
||||
sub a2, a2, t4
|
||||
mv t5, sp
|
||||
.Lscalar_data_loop:
|
||||
.word 205452119
|
||||
# from this on, vector registers are grouped with lmul = 8
|
||||
.word 33915911
|
||||
.word 34539527
|
||||
.word 780665943
|
||||
.word 33883175
|
||||
add a1, a1, t1
|
||||
add a0, a0, t1
|
||||
add t5, t5, t1
|
||||
sub t4, t4, t1
|
||||
bnez t4, .Lscalar_data_loop
|
||||
|
||||
bnez a2, .Lblock_loop
|
||||
|
||||
addi sp, sp, 64
|
||||
ld s0, 0(sp)
|
||||
ld s1, 8(sp)
|
||||
ld s2, 16(sp)
|
||||
ld s3, 24(sp)
|
||||
ld s4, 32(sp)
|
||||
ld s5, 40(sp)
|
||||
ld s6, 48(sp)
|
||||
ld s7, 56(sp)
|
||||
ld s8, 64(sp)
|
||||
ld s9, 72(sp)
|
||||
ld s10, 80(sp)
|
||||
ld s11, 88(sp)
|
||||
addi sp, sp, 96
|
||||
|
||||
ret
|
||||
.size ChaCha20_ctr32_v_zbb,.-ChaCha20_ctr32_v_zbb
|
||||
Vendored
+1540
File diff suppressed because it is too large.
Load diff
+268
@@ -0,0 +1,268 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkb_zvbc
|
||||
.type gcm_init_rv64i_zvkb_zvbc,@function
|
||||
gcm_init_rv64i_zvkb_zvbc:
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a1, a1, 8
|
||||
li t0, -8
|
||||
li t1, 63
|
||||
la t2, Lpolymod
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 173404295 # vlse64.v v1, (a1), t0
|
||||
.word 33812743 # vle64.v v2, (t2)
|
||||
|
||||
# Shift one left and get the carry bits.
|
||||
.word 2719171031 # vsrl.vx v3, v1, t1
|
||||
.word 2517676247 # vsll.vi v1, v1, 1
|
||||
|
||||
# Use the fact that the polynomial degree is no more than 128,
|
||||
# i.e. only the LSB of the upper half could be set.
|
||||
# Thanks to this we don't need to do the full reduction here.
|
||||
# Instead simply subtract the reduction polynomial.
|
||||
# This idea was taken from x86 ghash implementation in OpenSSL.
|
||||
.word 976269911 # vslideup.vi v4, v3, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
.word 672268503 # vor.vv v1, v1, v4, v0.t
|
||||
|
||||
# Need to set the mask to 3, if the carry bit is set.
|
||||
.word 1577156695 # vmv.v.v v0, v3
|
||||
.word 1577071063 # vmv.v.i v3, 0
|
||||
.word 1546760663 # vmerge.vim v3, v3, 3, v0
|
||||
.word 1577156695 # vmv.v.v v0, v3
|
||||
|
||||
.word 739311831 # vxor.vv v1, v1, v2, v0.t
|
||||
|
||||
.word 33910951 # vse64.v v1, (a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkb_zvbc,.-gcm_init_rv64i_zvkb_zvbc
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zvkb_zvbc
|
||||
.type gcm_gmult_rv64i_zvkb_zvbc,@function
|
||||
gcm_gmult_rv64i_zvkb_zvbc:
|
||||
ld t0, (a1)
|
||||
ld t1, 8(a1)
|
||||
li t2, 63
|
||||
la t3, Lpolymod
|
||||
ld t3, 8(t3)
|
||||
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a0, a0, 8
|
||||
li t4, -8
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 198537863 # vlse64.v v5, (a0), t4
|
||||
.word 1247060695 # vrev8.v v5, v5
|
||||
|
||||
# Multiplication
|
||||
|
||||
# Do two 64x64 multiplications in one go to save some time
|
||||
# and simplify things.
|
||||
|
||||
# A = a1a0 (t1, t0)
|
||||
# B = b1b0 (v5)
|
||||
# C = c1c0 (256 bit)
|
||||
# c1 = a1b1 + (a0b1)h + (a1b0)h
|
||||
# c0 = a0b0 + (a0b1)l + (a1b0)h
|
||||
|
||||
# v1 = (a0b1)l,(a0b0)l
|
||||
.word 844292311 # vclmul.vx v1, v5, t0
|
||||
# v3 = (a0b1)h,(a0b0)h
|
||||
.word 911401431 # vclmulh.vx v3, v5, t0
|
||||
|
||||
# v4 = (a1b1)l,(a1b0)l
|
||||
.word 844325463 # vclmul.vx v4, v5, t1
|
||||
# v2 = (a1b1)h,(a1b0)h
|
||||
.word 911434071 # vclmulh.vx v2, v5, t1
|
||||
|
||||
# Is there a better way to do this?
|
||||
# Would need to swap the order of elements within a vector register.
|
||||
.word 976270039 # vslideup.vi v5, v3, 1
|
||||
.word 977318743 # vslideup.vi v6, v4, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
.word 1044427351 # vslidedown.vi v4, v4, 1
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
# v2 += (a0b1)h
|
||||
.word 740393303 # vxor.vv v2, v2, v3, v0.t
|
||||
# v2 += (a1b1)l
|
||||
.word 740426071 # vxor.vv v2, v2, v4, v0.t
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
# v1 += (a0b0)h,0
|
||||
.word 739410135 # vxor.vv v1, v1, v5, v0.t
|
||||
# v1 += (a1b0)l,0
|
||||
.word 739442903 # vxor.vv v1, v1, v6, v0.t
|
||||
|
||||
# Now the 256bit product should be stored in (v2,v1)
|
||||
# v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l
|
||||
# v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l
|
||||
|
||||
# Reduction
|
||||
# Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0]
|
||||
# This is a slight variation of the Gueron's Montgomery reduction.
|
||||
# The difference being the order of some operations has been changed,
|
||||
# to make a better use of vclmul(h) instructions.
|
||||
|
||||
# First step:
|
||||
# c1 += (c0 * P)l
|
||||
# vmv.v.i v0, 2
|
||||
.word 940618199 # vslideup.vi v3, v1, 1, v0.t
|
||||
.word 809394647 # vclmul.vx v3, v3, t3, v0.t
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# Second step:
|
||||
# D = d1,d0 is final result
|
||||
# We want:
|
||||
# m1 = c1 + (c1 * P)h
|
||||
# m0 = (c1 * P)l + (c0 * P)h + c0
|
||||
# d1 = c3 + m1
|
||||
# d0 = c2 + m0
|
||||
|
||||
#v3 = (c1 * P)l, 0
|
||||
.word 807297495 # vclmul.vx v3, v1, t3, v0.t
|
||||
#v4 = (c1 * P)h, (c0 * P)h
|
||||
.word 907960919 # vclmulh.vx v4, v1, t3
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 772931799 # vxor.vv v1, v1, v4
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# XOR in the upper upper part of the product
|
||||
.word 773882199 # vxor.vv v2, v2, v1
|
||||
|
||||
.word 1243914583 # vrev8.v v2, v2
|
||||
.word 198537511 # vsse64.v v2, (a0), t4
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zvkb_zvbc,.-gcm_gmult_rv64i_zvkb_zvbc
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zvkb_zvbc
|
||||
.type gcm_ghash_rv64i_zvkb_zvbc,@function
|
||||
gcm_ghash_rv64i_zvkb_zvbc:
|
||||
ld t0, (a1)
|
||||
ld t1, 8(a1)
|
||||
li t2, 63
|
||||
la t3, Lpolymod
|
||||
ld t3, 8(t3)
|
||||
|
||||
# Load/store data in reverse order.
|
||||
# This is needed as a part of endianness swap.
|
||||
add a0, a0, 8
|
||||
add a2, a2, 8
|
||||
li t4, -8
|
||||
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu
|
||||
|
||||
.word 198537863 # vlse64.v v5, (a0), t4
|
||||
|
||||
Lstep:
|
||||
# Read input data
|
||||
.word 198603655 # vle64.v v0, (a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
# XOR them into Xi
|
||||
.word 777224919 # vxor.vv v0, v0, v1
|
||||
|
||||
.word 1247060695 # vrev8.v v5, v5
|
||||
|
||||
# Multiplication
|
||||
|
||||
# Do two 64x64 multiplications in one go to save some time
|
||||
# and simplify things.
|
||||
|
||||
# A = a1a0 (t1, t0)
|
||||
# B = b1b0 (v5)
|
||||
# C = c1c0 (256 bit)
|
||||
# c1 = a1b1 + (a0b1)h + (a1b0)h
|
||||
# c0 = a0b0 + (a0b1)l + (a1b0)h
|
||||
|
||||
# v1 = (a0b1)l,(a0b0)l
|
||||
.word 844292311 # vclmul.vx v1, v5, t0
|
||||
# v3 = (a0b1)h,(a0b0)h
|
||||
.word 911401431 # vclmulh.vx v3, v5, t0
|
||||
|
||||
# v4 = (a1b1)l,(a1b0)l
|
||||
.word 844325463 # vclmul.vx v4, v5, t1
|
||||
# v2 = (a1b1)h,(a1b0)h
|
||||
.word 911434071 # vclmulh.vx v2, v5, t1
|
||||
|
||||
# Is there a better way to do this?
|
||||
# Would need to swap the order of elements within a vector register.
|
||||
.word 976270039 # vslideup.vi v5, v3, 1
|
||||
.word 977318743 # vslideup.vi v6, v4, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
.word 1044427351 # vslidedown.vi v4, v4, 1
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
# v2 += (a0b1)h
|
||||
.word 740393303 # vxor.vv v2, v2, v3, v0.t
|
||||
# v2 += (a1b1)l
|
||||
.word 740426071 # vxor.vv v2, v2, v4, v0.t
|
||||
|
||||
.word 1577136215 # vmv.v.i v0, 2
|
||||
# v1 += (a0b0)h,0
|
||||
.word 739410135 # vxor.vv v1, v1, v5, v0.t
|
||||
# v1 += (a1b0)l,0
|
||||
.word 739442903 # vxor.vv v1, v1, v6, v0.t
|
||||
|
||||
# Now the 256bit product should be stored in (v2,v1)
|
||||
# v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l
|
||||
# v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l
|
||||
|
||||
# Reduction
|
||||
# Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0]
|
||||
# This is a slight variation of the Gueron's Montgomery reduction.
|
||||
# The difference being the order of some operations has been changed,
|
||||
# to make a better use of vclmul(h) instructions.
|
||||
|
||||
# First step:
|
||||
# c1 += (c0 * P)l
|
||||
# vmv.v.i v0, 2
|
||||
.word 940618199 # vslideup.vi v3, v1, 1, v0.t
|
||||
.word 809394647 # vclmul.vx v3, v3, t3, v0.t
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# Second step:
|
||||
# D = d1,d0 is final result
|
||||
# We want:
|
||||
# m1 = c1 + (c1 * P)h
|
||||
# m0 = (c1 * P)l + (c0 * P)h + c0
|
||||
# d1 = c3 + m1
|
||||
# d0 = c2 + m0
|
||||
|
||||
#v3 = (c1 * P)l, 0
|
||||
.word 807297495 # vclmul.vx v3, v1, t3, v0.t
|
||||
#v4 = (c1 * P)h, (c0 * P)h
|
||||
.word 907960919 # vclmulh.vx v4, v1, t3
|
||||
|
||||
.word 1577103447 # vmv.v.i v0, 1
|
||||
.word 1043378647 # vslidedown.vi v3, v3, 1
|
||||
|
||||
.word 772931799 # vxor.vv v1, v1, v4
|
||||
.word 739344599 # vxor.vv v1, v1, v3, v0.t
|
||||
|
||||
# XOR in the upper upper part of the product
|
||||
.word 773882199 # vxor.vv v2, v2, v1
|
||||
|
||||
.word 1243914967 # vrev8.v v2, v2
|
||||
|
||||
bnez a3, Lstep
|
||||
|
||||
.word 198537895 # vsse64.v v2, (a0), t4
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zvkb_zvbc,.-gcm_ghash_rv64i_zvkb_zvbc
|
||||
.p2align 4
|
||||
Lpolymod:
|
||||
.dword 0x0000000000000001
|
||||
.dword 0xc200000000000000
|
||||
.size Lpolymod,.-Lpolymod
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkg
|
||||
.type gcm_init_rv64i_zvkg,@function
|
||||
gcm_init_rv64i_zvkg:
|
||||
ld a2, 0(a1)
|
||||
ld a3, 8(a1)
|
||||
sb a2, 7(a0)
|
||||
srli t0, a2, 8
|
||||
sb t0, 6(a0)
|
||||
srli t0, a2, 16
|
||||
sb t0, 5(a0)
|
||||
srli t0, a2, 24
|
||||
sb t0, 4(a0)
|
||||
srli t0, a2, 32
|
||||
sb t0, 3(a0)
|
||||
srli t0, a2, 40
|
||||
sb t0, 2(a0)
|
||||
srli t0, a2, 48
|
||||
sb t0, 1(a0)
|
||||
srli t0, a2, 56
|
||||
sb t0, 0(a0)
|
||||
|
||||
sb a3, 15(a0)
|
||||
srli t0, a3, 8
|
||||
sb t0, 14(a0)
|
||||
srli t0, a3, 16
|
||||
sb t0, 13(a0)
|
||||
srli t0, a3, 24
|
||||
sb t0, 12(a0)
|
||||
srli t0, a3, 32
|
||||
sb t0, 11(a0)
|
||||
srli t0, a3, 40
|
||||
sb t0, 10(a0)
|
||||
srli t0, a3, 48
|
||||
sb t0, 9(a0)
|
||||
srli t0, a3, 56
|
||||
sb t0, 8(a0)
|
||||
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkg,.-gcm_init_rv64i_zvkg
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zvkg_zvkb
|
||||
.type gcm_init_rv64i_zvkg_zvkb,@function
|
||||
gcm_init_rv64i_zvkg_zvkb:
|
||||
.word 0xc1817057 # vsetivli x0, 2, e64, m1, ta, ma
|
||||
.word 33943559 # vle64.v v0, (a1)
|
||||
.word 1241817175 # vrev8.v v0, v0
|
||||
.word 33910823 # vse64.v v0, (a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zvkg_zvkb,.-gcm_init_rv64i_zvkg_zvkb
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zvkg
|
||||
.type gcm_gmult_rv64i_zvkg,@function
|
||||
gcm_gmult_rv64i_zvkg:
|
||||
.word 0xc1027057
|
||||
.word 33939719
|
||||
.word 33906823
|
||||
.word 2720571639
|
||||
.word 33906855
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zvkg,.-gcm_gmult_rv64i_zvkg
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zvkg
|
||||
.type gcm_ghash_rv64i_zvkg,@function
|
||||
gcm_ghash_rv64i_zvkg:
|
||||
.word 0xc1027057
|
||||
.word 33939719
|
||||
.word 33906823
|
||||
|
||||
Lstep:
|
||||
.word 33972615
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
.word 2988548343
|
||||
bnez a3, Lstep
|
||||
|
||||
.word 33906855
|
||||
ret
|
||||
|
||||
.size gcm_ghash_rv64i_zvkg,.-gcm_ghash_rv64i_zvkg
|
||||
+613
@@ -0,0 +1,613 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc
|
||||
.type gcm_init_rv64i_zbc,@function
|
||||
gcm_init_rv64i_zbc:
|
||||
ld a2,0(a1)
|
||||
ld a3,8(a1)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a2, 1
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 1
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a2, 2
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 2
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a2, 4
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 4
|
||||
or a2, t1, a2
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a3, 1
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 1
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a3, 2
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 2
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a3, 4
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 4
|
||||
or a3, t1, a3
|
||||
|
||||
sb a2, 7(a0)
|
||||
srli t0, a2, 8
|
||||
sb t0, 6(a0)
|
||||
srli t0, a2, 16
|
||||
sb t0, 5(a0)
|
||||
srli t0, a2, 24
|
||||
sb t0, 4(a0)
|
||||
srli t0, a2, 32
|
||||
sb t0, 3(a0)
|
||||
srli t0, a2, 40
|
||||
sb t0, 2(a0)
|
||||
srli t0, a2, 48
|
||||
sb t0, 1(a0)
|
||||
srli t0, a2, 56
|
||||
sb t0, 0(a0)
|
||||
|
||||
sb a3, 15(a0)
|
||||
srli t0, a3, 8
|
||||
sb t0, 14(a0)
|
||||
srli t0, a3, 16
|
||||
sb t0, 13(a0)
|
||||
srli t0, a3, 24
|
||||
sb t0, 12(a0)
|
||||
srli t0, a3, 32
|
||||
sb t0, 11(a0)
|
||||
srli t0, a3, 40
|
||||
sb t0, 10(a0)
|
||||
srli t0, a3, 48
|
||||
sb t0, 9(a0)
|
||||
srli t0, a3, 56
|
||||
sb t0, 8(a0)
|
||||
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc,.-gcm_init_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc__zbb
|
||||
.type gcm_init_rv64i_zbc__zbb,@function
|
||||
gcm_init_rv64i_zbc__zbb:
|
||||
ld a2,0(a1)
|
||||
ld a3,8(a1)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a2, 1
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 1
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a2, 2
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 2
|
||||
or a2, t1, a2
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a2, 4
|
||||
and t1, t1, t0
|
||||
and a2, a2, t0
|
||||
srli a2, a2, 4
|
||||
or a2, t1, a2
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a3, 1
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 1
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a3, 2
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 2
|
||||
or a3, t1, a3
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a3, 4
|
||||
and t1, t1, t0
|
||||
and a3, a3, t0
|
||||
srli a3, a3, 4
|
||||
or a3, t1, a3
|
||||
|
||||
.word 1803965971
|
||||
.word 1803998867
|
||||
sd a2,0(a0)
|
||||
sd a3,8(a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc__zbb,.-gcm_init_rv64i_zbc__zbb
|
||||
.p2align 3
|
||||
.globl gcm_init_rv64i_zbc__zbkb
|
||||
.type gcm_init_rv64i_zbc__zbkb,@function
|
||||
gcm_init_rv64i_zbc__zbkb:
|
||||
ld t0,0(a1)
|
||||
ld t1,8(a1)
|
||||
.word 1752355475
|
||||
.word 1752388371
|
||||
.word 1803735699
|
||||
.word 1803768595
|
||||
sd t0,0(a0)
|
||||
sd t1,8(a0)
|
||||
ret
|
||||
.size gcm_init_rv64i_zbc__zbkb,.-gcm_init_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zbc
|
||||
.type gcm_gmult_rv64i_zbc,@function
|
||||
gcm_gmult_rv64i_zbc:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Bit-reverse Xi back and store it
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zbc,.-gcm_gmult_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_gmult_rv64i_zbc__zbkb
|
||||
.type gcm_gmult_rv64i_zbc__zbkb,@function
|
||||
gcm_gmult_rv64i_zbc__zbkb:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Bit-reverse Xi back and store it
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_gmult_rv64i_zbc__zbkb,.-gcm_gmult_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zbc
|
||||
.type gcm_ghash_rv64i_zbc,@function
|
||||
gcm_ghash_rv64i_zbc:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
Lstep:
|
||||
# Load the input data, bit-reverse them, and XOR them with Xi
|
||||
ld t4, 0(a2)
|
||||
ld t5, 8(a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, t4, 1
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 1
|
||||
or t4, t1, t4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, t4, 2
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 2
|
||||
or t4, t1, t4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, t4, 4
|
||||
and t1, t1, t0
|
||||
and t4, t4, t0
|
||||
srli t4, t4, 4
|
||||
or t4, t1, t4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, t5, 1
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 1
|
||||
or t5, t1, t5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, t5, 2
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 2
|
||||
or t5, t1, t5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, t5, 4
|
||||
and t1, t1, t0
|
||||
and t5, t5, t0
|
||||
srli t5, t5, 4
|
||||
or t5, t1, t5
|
||||
|
||||
xor a4, a4, t4
|
||||
xor a5, a5, t5
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Iterate over all blocks
|
||||
bnez a3, Lstep
|
||||
|
||||
# Bit-reverse final Xi back and store it
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a4, 1
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 1
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a4, 2
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 2
|
||||
or a4, t1, a4
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a4, 4
|
||||
and t1, t1, t0
|
||||
and a4, a4, t0
|
||||
srli a4, a4, 4
|
||||
or a4, t1, a4
|
||||
|
||||
la t2, Lbrev8_const
|
||||
|
||||
ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA
|
||||
slli t1, a5, 1
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 1
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC
|
||||
slli t1, a5, 2
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 2
|
||||
or a5, t1, a5
|
||||
|
||||
ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0
|
||||
slli t1, a5, 4
|
||||
and t1, t1, t0
|
||||
and a5, a5, t0
|
||||
srli a5, a5, 4
|
||||
or a5, t1, a5
|
||||
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zbc,.-gcm_ghash_rv64i_zbc
|
||||
.p2align 3
|
||||
.globl gcm_ghash_rv64i_zbc__zbkb
|
||||
.type gcm_ghash_rv64i_zbc__zbkb,@function
|
||||
gcm_ghash_rv64i_zbc__zbkb:
|
||||
# Load Xi and bit-reverse it
|
||||
ld a4, 0(a0)
|
||||
ld a5, 8(a0)
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
|
||||
# Load the key (already bit-reversed)
|
||||
ld a6, 0(a1)
|
||||
ld a7, 8(a1)
|
||||
|
||||
# Load the reduction constant
|
||||
la t6, Lpolymod
|
||||
lbu t6, 0(t6)
|
||||
|
||||
Lstep_zkbk:
|
||||
# Load the input data, bit-reverse them, and XOR them with Xi
|
||||
ld t4, 0(a2)
|
||||
ld t5, 8(a2)
|
||||
add a2, a2, 16
|
||||
add a3, a3, -16
|
||||
.word 1753144979
|
||||
.word 1753177875
|
||||
xor a4, a4, t4
|
||||
xor a5, a5, t5
|
||||
|
||||
# Multiplication (without Karatsuba)
|
||||
.word 186105395
|
||||
.word 186094515
|
||||
.word 186072883
|
||||
.word 186061619
|
||||
xor t2, t2, t5
|
||||
.word 185057075
|
||||
.word 185048755
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 185024307
|
||||
.word 185012915
|
||||
xor t1, t1, t5
|
||||
|
||||
# Reduction with clmul
|
||||
.word 201211699
|
||||
.word 201203379
|
||||
xor t2, t2, t5
|
||||
xor t1, t1, t4
|
||||
.word 200523571
|
||||
.word 200515251
|
||||
xor a5, t1, t5
|
||||
xor a4, t0, t4
|
||||
|
||||
# Iterate over all blocks
|
||||
bnez a3, Lstep_zkbk
|
||||
|
||||
# Bit-reverse final Xi back and store it
|
||||
.word 1752651539
|
||||
.word 1752684435
|
||||
sd a4, 0(a0)
|
||||
sd a5, 8(a0)
|
||||
ret
|
||||
.size gcm_ghash_rv64i_zbc__zbkb,.-gcm_ghash_rv64i_zbc__zbkb
|
||||
.p2align 3
|
||||
Lbrev8_const:
|
||||
.dword 0xAAAAAAAAAAAAAAAA
|
||||
.dword 0xCCCCCCCCCCCCCCCC
|
||||
.dword 0xF0F0F0F0F0F0F0F0
|
||||
.size Lbrev8_const,.-Lbrev8_const
|
||||
|
||||
Lpolymod:
|
||||
.byte 0x87
|
||||
.size Lpolymod,.-Lpolymod
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,71 @@
|
||||
################################################################################
|
||||
# int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len)
|
||||
################################################################################
|
||||
.text
|
||||
.balign 16
|
||||
.globl CRYPTO_memcmp
|
||||
.type CRYPTO_memcmp,@function
|
||||
CRYPTO_memcmp:
|
||||
li t0,0
|
||||
beqz a2,2f # len == 0
|
||||
1:
|
||||
lbu t1,0(a0)
|
||||
lbu t2,0(a1)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,1
|
||||
addi a2,a2,-1
|
||||
xor t1,t1,t2
|
||||
or t0,t0,t1
|
||||
bgtz a2,1b
|
||||
2:
|
||||
mv a0,t0
|
||||
ret
|
||||
################################################################################
|
||||
# void OPENSSL_cleanse(void *ptr, size_t len)
|
||||
################################################################################
|
||||
.text
|
||||
.balign 16
|
||||
.globl OPENSSL_cleanse
|
||||
.type OPENSSL_cleanse,@function
|
||||
OPENSSL_cleanse:
|
||||
beqz a1,2f # len == 0, return
|
||||
srli t0,a1,4
|
||||
bnez t0,3f # len > 15
|
||||
|
||||
1: # Store <= 15 individual bytes
|
||||
sb x0,0(a0)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,-1
|
||||
bnez a1,1b
|
||||
2:
|
||||
ret
|
||||
|
||||
3: # Store individual bytes until we are aligned
|
||||
andi t0,a0,0x7
|
||||
beqz t0,4f
|
||||
sb x0,0(a0)
|
||||
addi a0,a0,1
|
||||
addi a1,a1,-1
|
||||
j 3b
|
||||
|
||||
4: # Store aligned dwords
|
||||
li t1,8
|
||||
4:
|
||||
sd x0,0(a0)
|
||||
addi a0,a0,8
|
||||
addi a1,a1,-8
|
||||
bge a1,t1,4b # if len>=8 loop
|
||||
bnez a1,1b # if len<8 and len != 0, store remaining bytes
|
||||
ret
|
||||
################################################################################
|
||||
# size_t riscv_vlen_asm(void)
|
||||
# Return VLEN (i.e. the length of a vector register in bits).
|
||||
.p2align 3
|
||||
.globl riscv_vlen_asm
|
||||
.type riscv_vlen_asm,@function
|
||||
riscv_vlen_asm:
|
||||
# 0xc22 is CSR vlenb
|
||||
csrr a0, 0xc22
|
||||
slli a0, a0, 3
|
||||
ret
|
||||
.size riscv_vlen_asm,.-riscv_vlen_asm
|
||||
deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S
Vendored
+229
@@ -0,0 +1,229 @@
|
||||
.text
|
||||
.p2align 2
|
||||
.globl sha256_block_data_order_zvkb_zvknha_or_zvknhb
|
||||
.type sha256_block_data_order_zvkb_zvknha_or_zvknhb,@function
|
||||
sha256_block_data_order_zvkb_zvknha_or_zvknhb:
|
||||
.word 3439489111
|
||||
|
||||
la a3, K256 # Load round constants K256
|
||||
.word 34006279
|
||||
addi a3, a3, 16
|
||||
.word 34006407
|
||||
addi a3, a3, 16
|
||||
.word 34006535
|
||||
addi a3, a3, 16
|
||||
.word 34006663
|
||||
addi a3, a3, 16
|
||||
.word 34006791
|
||||
addi a3, a3, 16
|
||||
.word 34006919
|
||||
addi a3, a3, 16
|
||||
.word 34007047
|
||||
addi a3, a3, 16
|
||||
.word 34007175
|
||||
addi a3, a3, 16
|
||||
.word 34007303
|
||||
addi a3, a3, 16
|
||||
.word 34007431
|
||||
addi a3, a3, 16
|
||||
.word 34007559
|
||||
addi a3, a3, 16
|
||||
.word 34007687
|
||||
addi a3, a3, 16
|
||||
.word 34007815
|
||||
addi a3, a3, 16
|
||||
.word 34007943
|
||||
addi a3, a3, 16
|
||||
.word 34008071
|
||||
addi a3, a3, 16
|
||||
.word 34008199
|
||||
|
||||
|
||||
# H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c}
|
||||
# The dst vtype is e32m1 and the index vtype is e8mf4.
|
||||
# We use index-load with the following index pattern at v26.
|
||||
# i8 index:
|
||||
# 20, 16, 4, 0
|
||||
# Instead of setting the i8 index, we could use a single 32bit
|
||||
# little-endian value to cover the 4xi8 index.
|
||||
# i32 value:
|
||||
# 0x 00 04 10 14
|
||||
li t4, 0x00041014
|
||||
.word 3439390807
|
||||
.word 1578028375
|
||||
|
||||
addi t3, a0, 8
|
||||
|
||||
# Use index-load to get {f,e,b,a},{h,g,d,c}
|
||||
.word 3439489111
|
||||
.word 128254727
|
||||
.word 128844679
|
||||
|
||||
# Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling.
|
||||
# The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking.
|
||||
.word 3422613591
|
||||
.word 1577103447
|
||||
|
||||
.word 3439489111
|
||||
|
||||
L_round_loop:
|
||||
# Decrement length by 1
|
||||
add a2, a2, -1
|
||||
|
||||
# Keep the current state as we need it later: H' = H+{a',b',c',...,h'}.
|
||||
.word 1577258839
|
||||
.word 1577291735
|
||||
|
||||
# Load the 512-bits of the message block in v1-v4 and perform
|
||||
# an endian swap on each 4 bytes element.
|
||||
.word 33939591
|
||||
.word 1242865879
|
||||
add a1, a1, 16
|
||||
.word 33939719
|
||||
.word 1243914583
|
||||
add a1, a1, 16
|
||||
.word 33939847
|
||||
.word 1244963287
|
||||
add a1, a1, 16
|
||||
.word 33939975
|
||||
.word 1246011991
|
||||
add a1, a1, 16
|
||||
|
||||
# Quad-round 0 (+0, Wt from oldest to newest in v1->v2->v3->v4)
|
||||
.word 44073687
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[19:16]
|
||||
|
||||
# Quad-round 1 (+1, v2->v3->v4->v1)
|
||||
.word 45155031
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[23:20]
|
||||
|
||||
# Quad-round 2 (+2, v3->v4->v1->v2)
|
||||
.word 46236375
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[27:24]
|
||||
|
||||
# Quad-round 3 (+3, v4->v1->v2->v3)
|
||||
.word 47317719
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[31:28]
|
||||
|
||||
# Quad-round 4 (+0, v1->v2->v3->v4)
|
||||
.word 48267991
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[35:32]
|
||||
|
||||
# Quad-round 5 (+1, v2->v3->v4->v1)
|
||||
.word 49349335
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[39:36]
|
||||
|
||||
# Quad-round 6 (+2, v3->v4->v1->v2)
|
||||
.word 50430679
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[43:40]
|
||||
|
||||
# Quad-round 7 (+3, v4->v1->v2->v3)
|
||||
.word 51512023
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[47:44]
|
||||
|
||||
# Quad-round 8 (+0, v1->v2->v3->v4)
|
||||
.word 52462295
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1546715863
|
||||
.word 3058835703 # Generate W[51:48]
|
||||
|
||||
# Quad-round 9 (+1, v2->v3->v4->v1)
|
||||
.word 53543639
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1547797207
|
||||
.word 3058737527 # Generate W[55:52]
|
||||
|
||||
# Quad-round 10 (+2, v3->v4->v1->v2)
|
||||
.word 54624983
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1544684247
|
||||
.word 3058770423 # Generate W[59:56]
|
||||
|
||||
# Quad-round 11 (+3, v4->v1->v2->v3)
|
||||
.word 55706327
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
.word 1545634519
|
||||
.word 3058803319 # Generate W[63:60]
|
||||
|
||||
# Quad-round 12 (+0, v1->v2->v3->v4)
|
||||
# Note that we stop generating new message schedule words (Wt, v1-13)
|
||||
# as we already generated all the words we end up consuming (i.e., W[63:60]).
|
||||
.word 56656599
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 13 (+1, v2->v3->v4->v1)
|
||||
.word 57737943
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 14 (+2, v3->v4->v1->v2)
|
||||
.word 58819287
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# Quad-round 15 (+3, v4->v1->v2->v3)
|
||||
.word 59900631
|
||||
.word 3194135543
|
||||
.word 3128075127
|
||||
|
||||
# H' = H+{a',b',c',...,h'}
|
||||
.word 65209175
|
||||
.word 66290647
|
||||
bnez a2, L_round_loop
|
||||
|
||||
# Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}.
|
||||
.word 128254759
|
||||
.word 128844711
|
||||
|
||||
ret
|
||||
.size sha256_block_data_order_zvkb_zvknha_or_zvknhb,.-sha256_block_data_order_zvkb_zvknha_or_zvknhb
|
||||
|
||||
.p2align 2
|
||||
.type K256,@object
|
||||
K256:
|
||||
.word 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
|
||||
.word 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
|
||||
.word 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
|
||||
.word 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
|
||||
.word 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
|
||||
.word 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
|
||||
.word 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
|
||||
.word 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
|
||||
.word 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
|
||||
.word 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
|
||||
.word 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
|
||||
.word 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
|
||||
.word 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
|
||||
.word 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
|
||||
.word 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
|
||||
.word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||
.size K256,.-K256
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
.text
|
||||
.p2align 2
|
||||
.globl sha512_block_data_order_zvkb_zvknhb
|
||||
.type sha512_block_data_order_zvkb_zvknhb,@function
|
||||
sha512_block_data_order_zvkb_zvknhb:
|
||||
.word 3448926295
|
||||
|
||||
# H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c}
|
||||
# The dst vtype is e64m2 and the index vtype is e8mf4.
|
||||
# We use index-load with the following index pattern at v1.
|
||||
# i8 index:
|
||||
# 40, 32, 8, 0
|
||||
# Instead of setting the i8 index, we could use a single 32bit
|
||||
# little-endian value to cover the 4xi8 index.
|
||||
# i32 value:
|
||||
# 0x 00 08 20 28
|
||||
li t4, 0x00082028
|
||||
.word 3439390807
|
||||
.word 1578025175
|
||||
|
||||
addi t3, a0, 16
|
||||
|
||||
# Use index-load to get {f,e,b,a},{h,g,d,c}
|
||||
.word 3448926295
|
||||
.word 102042375
|
||||
.word 102632455
|
||||
|
||||
# Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling.
|
||||
# The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking.
|
||||
.word 3422613591
|
||||
.word 1577103447
|
||||
|
||||
.word 3448926295
|
||||
|
||||
L_round_loop:
|
||||
# Load round constants K512
|
||||
la a3, K512
|
||||
|
||||
# Decrement length by 1
|
||||
addi a2, a2, -1
|
||||
|
||||
# Keep the current state as we need it later: H' = H+{a',b',c',...,h'}.
|
||||
.word 1577782615
|
||||
.word 1577848407
|
||||
|
||||
# Load the 1024-bits of the message block in v10-v16 and perform the endian
|
||||
# swap.
|
||||
.word 33944839
|
||||
.word 1252304215
|
||||
addi a1, a1, 32
|
||||
.word 33945095
|
||||
.word 1254401623
|
||||
addi a1, a1, 32
|
||||
.word 33945351
|
||||
.word 1256499031
|
||||
addi a1, a1, 32
|
||||
.word 33945607
|
||||
.word 1258596439
|
||||
addi a1, a1, 32
|
||||
|
||||
.rept 4
|
||||
# Quad-round 0 (+0, v10->v12->v14->v16)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54856023
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1558579543
|
||||
.word 3072861559
|
||||
|
||||
# Quad-round 1 (+1, v12->v14->v16->v10)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54921559
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1560742231
|
||||
.word 3072665207
|
||||
|
||||
# Quad-round 2 (+2, v14->v16->v10->v12)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54987095
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1554516311
|
||||
.word 3072730999
|
||||
|
||||
# Quad-round 3 (+3, v16->v10->v12->v14)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 55052631
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
.word 1556416855
|
||||
.word 3072796791
|
||||
.endr
|
||||
|
||||
# Quad-round 16 (+0, v10->v12->v14->v16)
|
||||
# Note that we stop generating new message schedule words (Wt, v10-16)
|
||||
# as we already generated all the words we end up consuming (i.e., W[79:76]).
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54856023
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 17 (+1, v12->v14->v16->v10)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54921559
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 18 (+2, v14->v16->v10->v12)
|
||||
.word 34011655
|
||||
addi a3, a3, 32
|
||||
.word 54987095
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# Quad-round 19 (+3, v16->v10->v12->v14)
|
||||
.word 34011655
|
||||
# No t1 increment needed.
|
||||
.word 55052631
|
||||
.word 3211340919
|
||||
.word 3146328951
|
||||
|
||||
# H' = H+{a',b',c',...,h'}
|
||||
.word 61541207
|
||||
.word 63704151
|
||||
bnez a2, L_round_loop
|
||||
|
||||
# Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}.
|
||||
.word 102042407
|
||||
.word 102632487
|
||||
|
||||
ret
|
||||
.size sha512_block_data_order_zvkb_zvknhb,.-sha512_block_data_order_zvkb_zvknhb
|
||||
|
||||
.p2align 3
|
||||
.type K512,@object
|
||||
K512:
|
||||
.dword 0x428a2f98d728ae22, 0x7137449123ef65cd
|
||||
.dword 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc
|
||||
.dword 0x3956c25bf348b538, 0x59f111f1b605d019
|
||||
.dword 0x923f82a4af194f9b, 0xab1c5ed5da6d8118
|
||||
.dword 0xd807aa98a3030242, 0x12835b0145706fbe
|
||||
.dword 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2
|
||||
.dword 0x72be5d74f27b896f, 0x80deb1fe3b1696b1
|
||||
.dword 0x9bdc06a725c71235, 0xc19bf174cf692694
|
||||
.dword 0xe49b69c19ef14ad2, 0xefbe4786384f25e3
|
||||
.dword 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65
|
||||
.dword 0x2de92c6f592b0275, 0x4a7484aa6ea6e483
|
||||
.dword 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5
|
||||
.dword 0x983e5152ee66dfab, 0xa831c66d2db43210
|
||||
.dword 0xb00327c898fb213f, 0xbf597fc7beef0ee4
|
||||
.dword 0xc6e00bf33da88fc2, 0xd5a79147930aa725
|
||||
.dword 0x06ca6351e003826f, 0x142929670a0e6e70
|
||||
.dword 0x27b70a8546d22ffc, 0x2e1b21385c26c926
|
||||
.dword 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df
|
||||
.dword 0x650a73548baf63de, 0x766a0abb3c77b2a8
|
||||
.dword 0x81c2c92e47edaee6, 0x92722c851482353b
|
||||
.dword 0xa2bfe8a14cf10364, 0xa81a664bbc423001
|
||||
.dword 0xc24b8b70d0f89791, 0xc76c51a30654be30
|
||||
.dword 0xd192e819d6ef5218, 0xd69906245565a910
|
||||
.dword 0xf40e35855771202a, 0x106aa07032bbd1b8
|
||||
.dword 0x19a4c116b8d2d0c8, 0x1e376c085141ab53
|
||||
.dword 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8
|
||||
.dword 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb
|
||||
.dword 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3
|
||||
.dword 0x748f82ee5defb2fc, 0x78a5636f43172f60
|
||||
.dword 0x84c87814a1f0ab72, 0x8cc702081a6439ec
|
||||
.dword 0x90befffa23631e28, 0xa4506cebde82bde9
|
||||
.dword 0xbef9a3f7b2c67915, 0xc67178f2e372532b
|
||||
.dword 0xca273eceea26619c, 0xd186b8c721c0c207
|
||||
.dword 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178
|
||||
.dword 0x06f067aa72176fba, 0x0a637dc5a2c898a6
|
||||
.dword 0x113f9804bef90dae, 0x1b710b35131c471b
|
||||
.dword 0x28db77f523047d84, 0x32caab7b40c72493
|
||||
.dword 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c
|
||||
.dword 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a
|
||||
.dword 0x5fcb6fab3ad6faec, 0x6c44198c4a475817
|
||||
.size K512,.-K512
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
.text
|
||||
.text
|
||||
.p2align 3
|
||||
.globl ossl_hwsm3_block_data_order_zvksh
|
||||
.type ossl_hwsm3_block_data_order_zvksh,@function
|
||||
ossl_hwsm3_block_data_order_zvksh:
|
||||
.word 3440668759
|
||||
|
||||
# Load initial state of hash context (c->A-H).
|
||||
.word 33906695
|
||||
.word 1241817175
|
||||
|
||||
L_sm3_loop:
|
||||
# Copy the previous state to v2.
|
||||
# It will be XOR'ed with the current state at the end of the round.
|
||||
.word 1577058647
|
||||
|
||||
# Load the 64B block in 2x32B chunks.
|
||||
.word 33940231 # v6 := {w7, ..., w0}
|
||||
addi a1, a1, 32
|
||||
|
||||
.word 33940487 # v8 := {w15, ..., w8}
|
||||
addi a1, a1, 32
|
||||
|
||||
addi a2, a2, -1
|
||||
|
||||
# As vsm3c consumes only w0, w1, w4, w5 we need to slide the input
|
||||
# 2 elements down so we process elements w2, w3, w6, w7
|
||||
# This will be repeated for each odd round.
|
||||
.word 1046557271 # v4 := {X, X, w7, ..., w2}
|
||||
|
||||
.word 2925535351
|
||||
.word 2923470967
|
||||
|
||||
# Prepare a vector with {w11, ..., w4}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w7, ..., w4}
|
||||
.word 981611095 # v4 := {w11, w10, w9, w8, w7, w6, w5, w4}
|
||||
|
||||
.word 2923503735
|
||||
.word 1044460119 # v4 := {X, X, w11, w10, w9, w8, w7, w6}
|
||||
.word 2923536503
|
||||
|
||||
.word 2927763575
|
||||
.word 1048654423 # v4 := {X, X, w15, w14, w13, w12, w11, w10}
|
||||
.word 2923602039
|
||||
|
||||
.word 2189632375 # v6 := {w23, w22, w21, w20, w19, w18, w17, w16}
|
||||
|
||||
# Prepare a register with {w19, w18, w17, w16, w15, w14, w13, w12}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w15, w14, w13, w12}
|
||||
.word 979513943 # v4 := {w19, w18, w17, w16, w15, w14, w13, w12}
|
||||
|
||||
.word 2923634807
|
||||
.word 1044460119 # v4 := {X, X, w19, w18, w17, w16, w15, w14}
|
||||
.word 2923667575
|
||||
|
||||
.word 2925797495
|
||||
.word 1046557271 # v4 := {X, X, w23, w22, w21, w20, w19, w18}
|
||||
.word 2923733111
|
||||
|
||||
.word 2187601015 # v8 := {w31, w30, w29, w28, w27, w26, w25, w24}
|
||||
|
||||
# Prepare a register with {w27, w26, w25, w24, w23, w22, w21, w20}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w23, w22, w21, w20}
|
||||
.word 981611095 # v4 := {w27, w26, w25, w24, w23, w22, w21, w20}
|
||||
|
||||
.word 2923765879
|
||||
.word 1044460119 # v4 := {X, X, w27, w26, w25, w24, w23, w22}
|
||||
.word 2923798647
|
||||
|
||||
.word 2928025719
|
||||
.word 1048654423 # v4 := {x, X, w31, w30, w29, w28, w27, w26}
|
||||
.word 2923864183
|
||||
|
||||
.word 2189632375 # v6 := {w32, w33, w34, w35, w36, w37, w38, w39}
|
||||
|
||||
# Prepare a register with {w35, w34, w33, w32, w31, w30, w29, w28}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w31, w30, w29, w28}
|
||||
.word 979513943 # v4 := {w35, w34, w33, w32, w31, w30, w29, w28}
|
||||
|
||||
.word 2923896951
|
||||
.word 1044460119 # v4 := {X, X, w35, w34, w33, w32, w31, w30}
|
||||
.word 2923929719
|
||||
|
||||
.word 2926059639
|
||||
.word 1046557271 # v4 := {X, X, w39, w38, w37, w36, w35, w34}
|
||||
.word 2923995255
|
||||
|
||||
.word 2187601015 # v8 := {w47, w46, w45, w44, w43, w42, w41, w40}
|
||||
|
||||
# Prepare a register with {w43, w42, w41, w40, w39, w38, w37, w36}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w39, w38, w37, w36}
|
||||
.word 981611095 # v4 := {w43, w42, w41, w40, w39, w38, w37, w36}
|
||||
|
||||
.word 2924028023
|
||||
.word 1044460119 # v4 := {X, X, w43, w42, w41, w40, w39, w38}
|
||||
.word 2924060791
|
||||
|
||||
.word 2928287863
|
||||
.word 1048654423 # v4 := {X, X, w47, w46, w45, w44, w43, w42}
|
||||
.word 2924126327
|
||||
|
||||
.word 2189632375 # v6 := {w55, w54, w53, w52, w51, w50, w49, w48}
|
||||
|
||||
# Prepare a register with {w51, w50, w49, w48, w47, w46, w45, w44}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w47, w46, w45, w44}
|
||||
.word 979513943 # v4 := {w51, w50, w49, w48, w47, w46, w45, w44}
|
||||
|
||||
.word 2924159095
|
||||
.word 1044460119 # v4 := {X, X, w51, w50, w49, w48, w47, w46}
|
||||
.word 2924191863
|
||||
|
||||
.word 2926321783
|
||||
.word 1046557271 # v4 := {X, X, w55, w54, w53, w52, w51, w50}
|
||||
.word 2924257399
|
||||
|
||||
.word 2187601015 # v8 := {w63, w62, w61, w60, w59, w58, w57, w56}
|
||||
|
||||
# Prepare a register with {w59, w58, w57, w56, w55, w54, w53, w52}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w55, w54, w53, w52}
|
||||
.word 981611095 # v4 := {w59, w58, w57, w56, w55, w54, w53, w52}
|
||||
|
||||
.word 2924290167
|
||||
.word 1044460119 # v4 := {X, X, w59, w58, w57, w56, w55, w54}
|
||||
.word 2924322935
|
||||
|
||||
.word 2928550007
|
||||
.word 1048654423 # v4 := {X, X, w63, w62, w61, w60, w59, w58}
|
||||
.word 2924388471
|
||||
|
||||
.word 2189632375 # v6 := {w71, w70, w69, w68, w67, w66, w65, w64}
|
||||
|
||||
# Prepare a register with {w67, w66, w65, w64, w63, w62, w61, w60}
|
||||
.word 1044460119 # v4 := {X, X, X, X, w63, w62, w61, w60}
|
||||
.word 979513943 # v4 := {w67, w66, w65, w64, w63, w62, w61, w60}
|
||||
|
||||
.word 2924421239
|
||||
.word 1044460119 # v4 := {X, X, w67, w66, w65, w64, w63, w62}
|
||||
.word 2924454007
|
||||
|
||||
# XOR in the previous state.
|
||||
.word 771817559
|
||||
|
||||
bnez a2, L_sm3_loop # Check if there are any more block to process
|
||||
L_sm3_end:
|
||||
.word 1241817175
|
||||
.word 33906727
|
||||
ret
|
||||
|
||||
.size ossl_hwsm3_block_data_order_zvksh,.-ossl_hwsm3_block_data_order_zvksh
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
.text
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_set_encrypt_key
|
||||
.type rv64i_zvksed_sm4_set_encrypt_key,@function
|
||||
rv64i_zvksed_sm4_set_encrypt_key:
|
||||
.word 0xc1027057
|
||||
|
||||
# Load the user key
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Load the FK.
|
||||
la t0, FK
|
||||
.word 33743111
|
||||
|
||||
# Generate round keys.
|
||||
.word 772866263
|
||||
.word 2249204215 # rk[0:3]
|
||||
.word 2251334263 # rk[4:7]
|
||||
.word 2252415735 # rk[8:11]
|
||||
.word 2253497207 # rk[12:15]
|
||||
.word 2254578679 # rk[16:19]
|
||||
.word 2255660151 # rk[20:23]
|
||||
.word 2256741623 # rk[24:27]
|
||||
.word 2257823095 # rk[28:31]
|
||||
|
||||
# Store round keys
|
||||
.word 33939879 # rk[0:3]
|
||||
addi a1, a1, 16
|
||||
.word 33940007 # rk[4:7]
|
||||
addi a1, a1, 16
|
||||
.word 33940135 # rk[8:11]
|
||||
addi a1, a1, 16
|
||||
.word 33940263 # rk[12:15]
|
||||
addi a1, a1, 16
|
||||
.word 33940391 # rk[16:19]
|
||||
addi a1, a1, 16
|
||||
.word 33940519 # rk[20:23]
|
||||
addi a1, a1, 16
|
||||
.word 33940647 # rk[24:27]
|
||||
addi a1, a1, 16
|
||||
.word 33940775 # rk[28:31]
|
||||
|
||||
li a0, 1
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_set_encrypt_key,.-rv64i_zvksed_sm4_set_encrypt_key
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_set_decrypt_key
|
||||
.type rv64i_zvksed_sm4_set_decrypt_key,@function
|
||||
rv64i_zvksed_sm4_set_decrypt_key:
|
||||
.word 0xc1027057
|
||||
|
||||
# Load the user key
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Load the FK.
|
||||
la t0, FK
|
||||
.word 33743111
|
||||
|
||||
# Generate round keys.
|
||||
.word 772866263
|
||||
.word 2249204215 # rk[0:3]
|
||||
.word 2251334263 # rk[4:7]
|
||||
.word 2252415735 # rk[8:11]
|
||||
.word 2253497207 # rk[12:15]
|
||||
.word 2254578679 # rk[16:19]
|
||||
.word 2255660151 # rk[20:23]
|
||||
.word 2256741623 # rk[24:27]
|
||||
.word 2257823095 # rk[28:31]
|
||||
|
||||
# Store round keys in reverse order
|
||||
addi a1, a1, 12
|
||||
li t1, -4
|
||||
.word 174449959 # rk[31:28]
|
||||
addi a1, a1, 16
|
||||
.word 174449831 # rk[27:24]
|
||||
addi a1, a1, 16
|
||||
.word 174449703 # rk[23:20]
|
||||
addi a1, a1, 16
|
||||
.word 174449575 # rk[19:16]
|
||||
addi a1, a1, 16
|
||||
.word 174449447 # rk[15:12]
|
||||
addi a1, a1, 16
|
||||
.word 174449319 # rk[11:8]
|
||||
addi a1, a1, 16
|
||||
.word 174449191 # rk[7:4]
|
||||
addi a1, a1, 16
|
||||
.word 174449063 # rk[3:0]
|
||||
|
||||
li a0, 1
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_set_decrypt_key,.-rv64i_zvksed_sm4_set_decrypt_key
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_encrypt
|
||||
.type rv64i_zvksed_sm4_encrypt,@function
|
||||
rv64i_zvksed_sm4_encrypt:
|
||||
.word 0xc1027057
|
||||
|
||||
# Order of elements was adjusted in set_encrypt_key()
|
||||
.word 33972487 # rk[0:3]
|
||||
addi a2, a2, 16
|
||||
.word 33972615 # rk[4:7]
|
||||
addi a2, a2, 16
|
||||
.word 33972743 # rk[8:11]
|
||||
addi a2, a2, 16
|
||||
.word 33972871 # rk[12:15]
|
||||
addi a2, a2, 16
|
||||
.word 33972999 # rk[16:19]
|
||||
addi a2, a2, 16
|
||||
.word 33973127 # rk[20:23]
|
||||
addi a2, a2, 16
|
||||
.word 33973255 # rk[24:27]
|
||||
addi a2, a2, 16
|
||||
.word 33973383 # rk[28:31]
|
||||
|
||||
# Load input data
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Encrypt with all keys
|
||||
.word 2787647735
|
||||
.word 2788696311
|
||||
.word 2789744887
|
||||
.word 2790793463
|
||||
.word 2791842039
|
||||
.word 2792890615
|
||||
.word 2793939191
|
||||
.word 2794987767
|
||||
|
||||
# Save the ciphertext (in reverse element order)
|
||||
.word 1242865879
|
||||
li t0, -4
|
||||
addi a1, a1, 12
|
||||
.word 173400231
|
||||
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_encrypt,.-rv64i_zvksed_sm4_encrypt
|
||||
.p2align 3
|
||||
.globl rv64i_zvksed_sm4_decrypt
|
||||
.type rv64i_zvksed_sm4_decrypt,@function
|
||||
rv64i_zvksed_sm4_decrypt:
|
||||
.word 0xc1027057
|
||||
|
||||
# Order of elements was adjusted in set_decrypt_key()
|
||||
.word 33973383 # rk[31:28]
|
||||
addi a2, a2, 16
|
||||
.word 33973255 # rk[27:24]
|
||||
addi a2, a2, 16
|
||||
.word 33973127 # rk[23:20]
|
||||
addi a2, a2, 16
|
||||
.word 33972999 # rk[19:16]
|
||||
addi a2, a2, 16
|
||||
.word 33972871 # rk[15:11]
|
||||
addi a2, a2, 16
|
||||
.word 33972743 # rk[11:8]
|
||||
addi a2, a2, 16
|
||||
.word 33972615 # rk[7:4]
|
||||
addi a2, a2, 16
|
||||
.word 33972487 # rk[3:0]
|
||||
|
||||
# Load input data
|
||||
.word 33906823
|
||||
.word 1242865879
|
||||
|
||||
# Encrypt with all keys
|
||||
.word 2794987767
|
||||
.word 2793939191
|
||||
.word 2792890615
|
||||
.word 2791842039
|
||||
.word 2790793463
|
||||
.word 2789744887
|
||||
.word 2788696311
|
||||
.word 2787647735
|
||||
|
||||
# Save the ciphertext (in reverse element order)
|
||||
.word 1242865879
|
||||
li t0, -4
|
||||
addi a1, a1, 12
|
||||
.word 173400231
|
||||
|
||||
ret
|
||||
.size rv64i_zvksed_sm4_decrypt,.-rv64i_zvksed_sm4_decrypt
|
||||
# Family Key (little-endian 32-bit chunks)
|
||||
.p2align 3
|
||||
FK:
|
||||
.word 0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC
|
||||
.size FK,.-FK
|
||||
@@ -0,0 +1,37 @@
|
||||
/* clang-format off */
|
||||
/* WARNING: do not edit! */
|
||||
/* Generated by Makefile from include/crypto/bn_conf.h.in */
|
||||
/* clang-format on */
|
||||
/*
|
||||
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OSSL_CRYPTO_BN_CONF_H
|
||||
#define OSSL_CRYPTO_BN_CONF_H
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* The contents of this file are not used in the UEFI build, as
|
||||
* both 32-bit and 64-bit builds are supported from a single run
|
||||
* of the Configure script.
|
||||
*/
|
||||
|
||||
/* Should we define BN_DIV2W here? */
|
||||
|
||||
/* Only one for the following should be defined */
|
||||
/* clang-format off */
|
||||
#define SIXTY_FOUR_BIT_LONG
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
#undef SIXTY_FOUR_BIT
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
#undef THIRTY_TWO_BIT
|
||||
/* clang-format on */
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,25 @@
|
||||
/* clang-format off */
|
||||
/* WARNING: do not edit! */
|
||||
/* Generated by Makefile from include/crypto/dso_conf.h.in */
|
||||
/* clang-format on */
|
||||
/*
|
||||
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OSSL_CRYPTO_DSO_CONF_H
|
||||
#define OSSL_CRYPTO_DSO_CONF_H
|
||||
#pragma once
|
||||
|
||||
/* clang-format off */
|
||||
# define DSO_DLFCN
|
||||
# define HAVE_DLFCN_H
|
||||
/* clang-format on */
|
||||
/* clang-format off */
|
||||
# define DSO_EXTENSION ".so"
|
||||
/* clang-format on */
|
||||
#endif
|
||||
+473
@@ -0,0 +1,473 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/internal/param_names.h.in
|
||||
*
|
||||
* Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (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
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
/* clang-format off */
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
int ossl_param_find_pidx(const char *s);
|
||||
|
||||
/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */
|
||||
/* clang-format off */
|
||||
#define NUM_PIDX 346
|
||||
|
||||
#define PIDX_ALG_PARAM_ALGORITHM_ID 0
|
||||
#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1
|
||||
#define PIDX_ALG_PARAM_CIPHER 2
|
||||
#define PIDX_ALG_PARAM_DIGEST 3
|
||||
#define PIDX_ALG_PARAM_ENGINE 4
|
||||
#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5
|
||||
#define PIDX_ALG_PARAM_MAC 6
|
||||
#define PIDX_ALG_PARAM_PROPERTIES 7
|
||||
#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED
|
||||
#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8
|
||||
#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9
|
||||
#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10
|
||||
#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE
|
||||
#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11
|
||||
#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_ALG 13
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_ID 14
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_NAME 20
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21
|
||||
#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_OID 30
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32
|
||||
#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33
|
||||
#define PIDX_CIPHER_PARAM_AEAD 34
|
||||
#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN
|
||||
#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35
|
||||
#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TAG 37
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42
|
||||
#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44
|
||||
#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45
|
||||
#define PIDX_CIPHER_PARAM_CTS 46
|
||||
#define PIDX_CIPHER_PARAM_CTS_MODE 47
|
||||
#define PIDX_CIPHER_PARAM_CUSTOM_IV 48
|
||||
#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49
|
||||
#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50
|
||||
#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51
|
||||
#define PIDX_CIPHER_PARAM_IV 52
|
||||
#define PIDX_CIPHER_PARAM_IVLEN 53
|
||||
#define PIDX_CIPHER_PARAM_KEYLEN 54
|
||||
#define PIDX_CIPHER_PARAM_MODE 55
|
||||
#define PIDX_CIPHER_PARAM_NUM 56
|
||||
#define PIDX_CIPHER_PARAM_PADDING 57
|
||||
#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58
|
||||
#define PIDX_CIPHER_PARAM_RANDOM_KEY 59
|
||||
#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60
|
||||
#define PIDX_CIPHER_PARAM_ROUNDS 61
|
||||
#define PIDX_CIPHER_PARAM_SPEED 62
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70
|
||||
#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71
|
||||
#define PIDX_CIPHER_PARAM_TLS_MAC 72
|
||||
#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73
|
||||
#define PIDX_CIPHER_PARAM_TLS_VERSION 74
|
||||
#define PIDX_CIPHER_PARAM_UPDATED_IV 75
|
||||
#define PIDX_CIPHER_PARAM_USE_BITS 76
|
||||
#define PIDX_CIPHER_PARAM_XTS_STANDARD 77
|
||||
#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78
|
||||
#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45
|
||||
#define PIDX_DIGEST_PARAM_MICALG 79
|
||||
#define PIDX_DIGEST_PARAM_PAD_TYPE 80
|
||||
#define PIDX_DIGEST_PARAM_SIZE 81
|
||||
#define PIDX_DIGEST_PARAM_SSL3_MS 82
|
||||
#define PIDX_DIGEST_PARAM_XOF 83
|
||||
#define PIDX_DIGEST_PARAM_XOFLEN 84
|
||||
#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85
|
||||
#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC
|
||||
#define PIDX_DRBG_PARAM_MAX_ADINLEN 86
|
||||
#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87
|
||||
#define PIDX_DRBG_PARAM_MAX_LENGTH 88
|
||||
#define PIDX_DRBG_PARAM_MAX_NONCELEN 89
|
||||
#define PIDX_DRBG_PARAM_MAX_PERSLEN 90
|
||||
#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91
|
||||
#define PIDX_DRBG_PARAM_MIN_LENGTH 92
|
||||
#define PIDX_DRBG_PARAM_MIN_NONCELEN 93
|
||||
#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94
|
||||
#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_DRBG_PARAM_RANDOM_DATA 95
|
||||
#define PIDX_DRBG_PARAM_RESEED_COUNTER 96
|
||||
#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97
|
||||
#define PIDX_DRBG_PARAM_RESEED_TIME 98
|
||||
#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99
|
||||
#define PIDX_DRBG_PARAM_SIZE 81
|
||||
#define PIDX_DRBG_PARAM_USE_DF 100
|
||||
#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101
|
||||
#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102
|
||||
#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107
|
||||
#define PIDX_EXCHANGE_PARAM_KDF_UKM 108
|
||||
#define PIDX_EXCHANGE_PARAM_PAD 109
|
||||
#define PIDX_GEN_PARAM_ITERATION 110
|
||||
#define PIDX_GEN_PARAM_POTENTIAL 111
|
||||
#define PIDX_KDF_PARAM_ARGON2_AD 112
|
||||
#define PIDX_KDF_PARAM_ARGON2_LANES 113
|
||||
#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114
|
||||
#define PIDX_KDF_PARAM_ARGON2_VERSION 115
|
||||
#define PIDX_KDF_PARAM_CEK_ALG 116
|
||||
#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_KDF_PARAM_CONSTANT 117
|
||||
#define PIDX_KDF_PARAM_DATA 118
|
||||
#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_KDF_PARAM_EARLY_CLEAN 119
|
||||
#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120
|
||||
#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121
|
||||
#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122
|
||||
#define PIDX_KDF_PARAM_INFO 123
|
||||
#define PIDX_KDF_PARAM_ITER 124
|
||||
#define PIDX_KDF_PARAM_KBKDF_R 125
|
||||
#define PIDX_KDF_PARAM_KBKDF_USE_L 126
|
||||
#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127
|
||||
#define PIDX_KDF_PARAM_KEY 128
|
||||
#define PIDX_KDF_PARAM_LABEL 129
|
||||
#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC
|
||||
#define PIDX_KDF_PARAM_MAC_SIZE 130
|
||||
#define PIDX_KDF_PARAM_MODE 55
|
||||
#define PIDX_KDF_PARAM_PASSWORD 131
|
||||
#define PIDX_KDF_PARAM_PKCS12_ID 132
|
||||
#define PIDX_KDF_PARAM_PKCS5 133
|
||||
#define PIDX_KDF_PARAM_PREFIX 134
|
||||
#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_KDF_PARAM_SALT 135
|
||||
#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136
|
||||
#define PIDX_KDF_PARAM_SCRYPT_N 137
|
||||
#define PIDX_KDF_PARAM_SCRYPT_P 138
|
||||
#define PIDX_KDF_PARAM_SCRYPT_R 125
|
||||
#define PIDX_KDF_PARAM_SECRET 139
|
||||
#define PIDX_KDF_PARAM_SEED 140
|
||||
#define PIDX_KDF_PARAM_SIZE 81
|
||||
#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141
|
||||
#define PIDX_KDF_PARAM_SSHKDF_TYPE 142
|
||||
#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143
|
||||
#define PIDX_KDF_PARAM_THREADS 144
|
||||
#define PIDX_KDF_PARAM_UKM 145
|
||||
#define PIDX_KDF_PARAM_X942_ACVPINFO 146
|
||||
#define PIDX_KDF_PARAM_X942_PARTYUINFO 147
|
||||
#define PIDX_KDF_PARAM_X942_PARTYVINFO 148
|
||||
#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149
|
||||
#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150
|
||||
#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151
|
||||
#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_KEM_PARAM_IKME 152
|
||||
#define PIDX_KEM_PARAM_OPERATION 153
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162
|
||||
#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163
|
||||
#define PIDX_MAC_PARAM_BLOCK_SIZE 164
|
||||
#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_MAC_PARAM_CUSTOM 165
|
||||
#define PIDX_MAC_PARAM_C_ROUNDS 166
|
||||
#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_MAC_PARAM_DIGEST_NOINIT 167
|
||||
#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168
|
||||
#define PIDX_MAC_PARAM_D_ROUNDS 169
|
||||
#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC
|
||||
#define PIDX_MAC_PARAM_IV 52
|
||||
#define PIDX_MAC_PARAM_KEY 128
|
||||
#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_MAC_PARAM_SALT 135
|
||||
#define PIDX_MAC_PARAM_SIZE 81
|
||||
#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170
|
||||
#define PIDX_MAC_PARAM_XOF 83
|
||||
#define PIDX_OBJECT_PARAM_DATA 118
|
||||
#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171
|
||||
#define PIDX_OBJECT_PARAM_DATA_TYPE 172
|
||||
#define PIDX_OBJECT_PARAM_DESC 173
|
||||
#define PIDX_OBJECT_PARAM_INPUT_TYPE 174
|
||||
#define PIDX_OBJECT_PARAM_REFERENCE 175
|
||||
#define PIDX_OBJECT_PARAM_TYPE 142
|
||||
#define PIDX_PASSPHRASE_PARAM_INFO 123
|
||||
#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID
|
||||
#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_PKEY_PARAM_BITS 176
|
||||
#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER
|
||||
#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177
|
||||
#define PIDX_PKEY_PARAM_DHKEM_IKM 178
|
||||
#define PIDX_PKEY_PARAM_DH_GENERATOR 179
|
||||
#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180
|
||||
#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_DIGEST_SIZE 181
|
||||
#define PIDX_PKEY_PARAM_DIST_ID 182
|
||||
#define PIDX_PKEY_PARAM_EC_A 183
|
||||
#define PIDX_PKEY_PARAM_EC_B 184
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_M 185
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189
|
||||
#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190
|
||||
#define PIDX_PKEY_PARAM_EC_COFACTOR 191
|
||||
#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192
|
||||
#define PIDX_PKEY_PARAM_EC_ENCODING 193
|
||||
#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194
|
||||
#define PIDX_PKEY_PARAM_EC_GENERATOR 195
|
||||
#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196
|
||||
#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197
|
||||
#define PIDX_PKEY_PARAM_EC_ORDER 198
|
||||
#define PIDX_PKEY_PARAM_EC_P 138
|
||||
#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199
|
||||
#define PIDX_PKEY_PARAM_EC_PUB_X 200
|
||||
#define PIDX_PKEY_PARAM_EC_PUB_Y 201
|
||||
#define PIDX_PKEY_PARAM_EC_SEED 140
|
||||
#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202
|
||||
#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE
|
||||
#define PIDX_PKEY_PARAM_FFC_COFACTOR 203
|
||||
#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_FFC_G 204
|
||||
#define PIDX_PKEY_PARAM_FFC_GINDEX 205
|
||||
#define PIDX_PKEY_PARAM_FFC_H 206
|
||||
#define PIDX_PKEY_PARAM_FFC_P 138
|
||||
#define PIDX_PKEY_PARAM_FFC_PBITS 207
|
||||
#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208
|
||||
#define PIDX_PKEY_PARAM_FFC_Q 209
|
||||
#define PIDX_PKEY_PARAM_FFC_QBITS 210
|
||||
#define PIDX_PKEY_PARAM_FFC_SEED 140
|
||||
#define PIDX_PKEY_PARAM_FFC_TYPE 142
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212
|
||||
#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213
|
||||
#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214
|
||||
#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215
|
||||
#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216
|
||||
#define PIDX_PKEY_PARAM_GROUP_NAME 217
|
||||
#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8
|
||||
#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218
|
||||
#define PIDX_PKEY_PARAM_MASKGENFUNC 219
|
||||
#define PIDX_PKEY_PARAM_MAX_SIZE 220
|
||||
#define PIDX_PKEY_PARAM_MGF1_DIGEST 221
|
||||
#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226
|
||||
#define PIDX_PKEY_PARAM_ML_DSA_SEED 140
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231
|
||||
#define PIDX_PKEY_PARAM_ML_KEM_SEED 140
|
||||
#define PIDX_PKEY_PARAM_PAD_MODE 232
|
||||
#define PIDX_PKEY_PARAM_PRIV_KEY 233
|
||||
#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_PUB_KEY 234
|
||||
#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243
|
||||
#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244
|
||||
#define PIDX_PKEY_PARAM_RSA_D 245
|
||||
#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246
|
||||
#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_PKEY_PARAM_RSA_E 247
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT 248
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257
|
||||
#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR 259
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR1 260
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR10 261
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR2 262
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR3 263
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR4 264
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR5 265
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR6 266
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR7 267
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR8 268
|
||||
#define PIDX_PKEY_PARAM_RSA_FACTOR9 269
|
||||
#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC
|
||||
#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_PKEY_PARAM_RSA_N 137
|
||||
#define PIDX_PKEY_PARAM_RSA_PRIMES 270
|
||||
#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_P1 272
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_P2 273
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP 276
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280
|
||||
#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281
|
||||
#define PIDX_PKEY_PARAM_SECURITY_BITS 282
|
||||
#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140
|
||||
#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG
|
||||
#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283
|
||||
#define PIDX_PROV_PARAM_BUILDINFO 284
|
||||
#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285
|
||||
#define PIDX_PROV_PARAM_CORE_PROV_NAME 286
|
||||
#define PIDX_PROV_PARAM_CORE_VERSION 287
|
||||
#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288
|
||||
#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289
|
||||
#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290
|
||||
#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291
|
||||
#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292
|
||||
#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293
|
||||
#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294
|
||||
#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295
|
||||
#define PIDX_PROV_PARAM_NAME 296
|
||||
#define PIDX_PROV_PARAM_NO_SHORT_MAC 297
|
||||
#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298
|
||||
#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299
|
||||
#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300
|
||||
#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301
|
||||
#define PIDX_PROV_PARAM_SECURITY_CHECKS 302
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_DESC 303
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304
|
||||
#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305
|
||||
#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306
|
||||
#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307
|
||||
#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308
|
||||
#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309
|
||||
#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310
|
||||
#define PIDX_PROV_PARAM_STATUS 311
|
||||
#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312
|
||||
#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313
|
||||
#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316
|
||||
#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317
|
||||
#define PIDX_PROV_PARAM_VERSION 115
|
||||
#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318
|
||||
#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319
|
||||
#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320
|
||||
#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_RAND_PARAM_GENERATE 321
|
||||
#define PIDX_RAND_PARAM_MAX_REQUEST 322
|
||||
#define PIDX_RAND_PARAM_STATE 323
|
||||
#define PIDX_RAND_PARAM_STRENGTH 324
|
||||
#define PIDX_RAND_PARAM_TEST_ENTROPY 325
|
||||
#define PIDX_RAND_PARAM_TEST_NONCE 326
|
||||
#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327
|
||||
#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID
|
||||
#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS
|
||||
#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328
|
||||
#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329
|
||||
#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST
|
||||
#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330
|
||||
#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331
|
||||
#define PIDX_SIGNATURE_PARAM_INSTANCE 332
|
||||
#define PIDX_SIGNATURE_PARAM_KAT 333
|
||||
#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334
|
||||
#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST
|
||||
#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES
|
||||
#define PIDX_SIGNATURE_PARAM_MU 335
|
||||
#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336
|
||||
#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE
|
||||
#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES
|
||||
#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271
|
||||
#define PIDX_SIGNATURE_PARAM_SIGNATURE 337
|
||||
#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338
|
||||
#define PIDX_SKEY_PARAM_KEY_LENGTH 339
|
||||
#define PIDX_SKEY_PARAM_RAW_BYTES 340
|
||||
#define PIDX_STORE_PARAM_ALIAS 341
|
||||
#define PIDX_STORE_PARAM_DIGEST 3
|
||||
#define PIDX_STORE_PARAM_EXPECT 342
|
||||
#define PIDX_STORE_PARAM_FINGERPRINT 343
|
||||
#define PIDX_STORE_PARAM_INPUT_TYPE 174
|
||||
#define PIDX_STORE_PARAM_ISSUER 296
|
||||
#define PIDX_STORE_PARAM_PROPERTIES 7
|
||||
#define PIDX_STORE_PARAM_SERIAL 344
|
||||
#define PIDX_STORE_PARAM_SUBJECT 345
|
||||
/* clang-format on */
|
||||
Loaded 100 of 223 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user