crypto/ecrdsa_defs.h
Source file repositories/reference/linux-study-clean/crypto/ecrdsa_defs.h
File Facts
- System
- Linux kernel
- Corpus path
crypto/ecrdsa_defs.h- Extension
.h- Size
- 7486 bytes
- Lines
- 231
- Domain
- Kernel Services
- Bucket
- crypto
- Inferred role
- Kernel Services: implementation source
- Status
- source implementation candidate
Why This File Exists
Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
crypto/internal/ecc.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
#ifndef _CRYTO_ECRDSA_DEFS_H
#define _CRYTO_ECRDSA_DEFS_H
#include <crypto/internal/ecc.h>
#define ECRDSA_MAX_SIG_SIZE (2 * 512 / 8)
#define ECRDSA_MAX_DIGITS (512 / 64)
/*
* EC-RDSA uses its own set of curves.
*
* cp256{a,b,c} curves first defined for GOST R 34.10-2001 in RFC 4357 (as
* 256-bit {A,B,C}-ParamSet), but inherited for GOST R 34.10-2012 and
* proposed for use in R 50.1.114-2016 and RFC 7836 as the 256-bit curves.
*/
/* OID_gostCPSignA 1.2.643.2.2.35.1 */
static u64 cp256a_g_x[] = {
0x0000000000000001ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, };
static u64 cp256a_g_y[] = {
0x22ACC99C9E9F1E14ull, 0x35294F2DDF23E3B1ull,
0x27DF505A453F2B76ull, 0x8D91E471E0989CDAull, };
static u64 cp256a_p[] = { /* p = 2^256 - 617 */
0xFFFFFFFFFFFFFD97ull, 0xFFFFFFFFFFFFFFFFull,
0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull };
static u64 cp256a_n[] = {
0x45841B09B761B893ull, 0x6C611070995AD100ull,
0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull };
static u64 cp256a_a[] = { /* a = p - 3 */
0xFFFFFFFFFFFFFD94ull, 0xFFFFFFFFFFFFFFFFull,
0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull };
static u64 cp256a_b[] = {
0x00000000000000a6ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull };
static struct ecc_curve gost_cp256a = {
.name = "cp256a",
.nbits = 256,
.g = {
.x = cp256a_g_x,
.y = cp256a_g_y,
.ndigits = 256 / 64,
},
.p = cp256a_p,
.n = cp256a_n,
.a = cp256a_a,
.b = cp256a_b
};
/* OID_gostCPSignB 1.2.643.2.2.35.2 */
static u64 cp256b_g_x[] = {
0x0000000000000001ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, };
static u64 cp256b_g_y[] = {
0x744BF8D717717EFCull, 0xC545C9858D03ECFBull,
0xB83D1C3EB2C070E5ull, 0x3FA8124359F96680ull, };
static u64 cp256b_p[] = { /* p = 2^255 + 3225 */
0x0000000000000C99ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x8000000000000000ull, };
static u64 cp256b_n[] = {
0xE497161BCC8A198Full, 0x5F700CFFF1A624E5ull,
0x0000000000000001ull, 0x8000000000000000ull, };
static u64 cp256b_a[] = { /* a = p - 3 */
0x0000000000000C96ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x8000000000000000ull, };
static u64 cp256b_b[] = {
0x2F49D4CE7E1BBC8Bull, 0xE979259373FF2B18ull,
0x66A7D3C25C3DF80Aull, 0x3E1AF419A269A5F8ull, };
static struct ecc_curve gost_cp256b = {
.name = "cp256b",
.nbits = 256,
.g = {
.x = cp256b_g_x,
.y = cp256b_g_y,
.ndigits = 256 / 64,
},
.p = cp256b_p,
.n = cp256b_n,
.a = cp256b_a,
.b = cp256b_b
};
/* OID_gostCPSignC 1.2.643.2.2.35.3 */
static u64 cp256c_g_x[] = {
0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, };
static u64 cp256c_g_y[] = {
0x366E550DFDB3BB67ull, 0x4D4DC440D4641A8Full,
0x3CBF3783CD08C0EEull, 0x41ECE55743711A8Cull, };
Annotation
- Immediate include surface: `crypto/internal/ecc.h`.
- Atlas domain: Kernel Services / crypto.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.