Import gcrypt public-key cryptography and implement signature checking.
This commit is contained in:
parent
535714bdcf
commit
5e3b8dcbb5
238 changed files with 40500 additions and 417 deletions
204
grub-core/lib/libgcrypt/src/gcrypt-module.h
Normal file
204
grub-core/lib/libgcrypt/src/gcrypt-module.h
Normal file
|
@ -0,0 +1,204 @@
|
|||
/* gcrypt-module.h - GNU Cryptographic Library Interface
|
||||
Copyright (C) 2003, 2007 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of Libgcrypt.
|
||||
|
||||
Libgcrypt is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
Libgcrypt is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
This file contains the necessary declarations/definitions for
|
||||
working with Libgcrypt modules. Since 1.6 this is an internal
|
||||
interface and will eventually be merged into another header or
|
||||
entirely removed.
|
||||
*/
|
||||
|
||||
#ifndef GCRYPT_MODULE_H
|
||||
#define GCRYPT_MODULE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#if 0 /* keep Emacsens's auto-indent happy */
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* The interfaces using the module system reserve a certain range of
|
||||
IDs for application use. These IDs are not valid within Libgcrypt
|
||||
but Libgcrypt makes sure never to allocate such a module ID. */
|
||||
#define GCRY_MODULE_ID_USER 1024
|
||||
#define GCRY_MODULE_ID_USER_LAST 4095
|
||||
|
||||
|
||||
/* This type represents a `module'. */
|
||||
typedef struct gcry_module *gcry_module_t;
|
||||
|
||||
/* Check that the library fulfills the version requirement. */
|
||||
|
||||
/* Type for the cipher_setkey function. */
|
||||
typedef gcry_err_code_t (*gcry_cipher_setkey_t) (void *c,
|
||||
const unsigned char *key,
|
||||
unsigned keylen);
|
||||
|
||||
/* Type for the cipher_encrypt function. */
|
||||
typedef void (*gcry_cipher_encrypt_t) (void *c,
|
||||
unsigned char *outbuf,
|
||||
const unsigned char *inbuf);
|
||||
|
||||
/* Type for the cipher_decrypt function. */
|
||||
typedef void (*gcry_cipher_decrypt_t) (void *c,
|
||||
unsigned char *outbuf,
|
||||
const unsigned char *inbuf);
|
||||
|
||||
/* Type for the cipher_stencrypt function. */
|
||||
typedef void (*gcry_cipher_stencrypt_t) (void *c,
|
||||
unsigned char *outbuf,
|
||||
const unsigned char *inbuf,
|
||||
unsigned int n);
|
||||
|
||||
/* Type for the cipher_stdecrypt function. */
|
||||
typedef void (*gcry_cipher_stdecrypt_t) (void *c,
|
||||
unsigned char *outbuf,
|
||||
const unsigned char *inbuf,
|
||||
unsigned int n);
|
||||
|
||||
typedef struct gcry_cipher_oid_spec
|
||||
{
|
||||
const char *oid;
|
||||
int mode;
|
||||
} gcry_cipher_oid_spec_t;
|
||||
|
||||
/* Module specification structure for ciphers. */
|
||||
typedef struct gcry_cipher_spec
|
||||
{
|
||||
const char *name;
|
||||
const char **aliases;
|
||||
gcry_cipher_oid_spec_t *oids;
|
||||
size_t blocksize;
|
||||
size_t keylen;
|
||||
size_t contextsize;
|
||||
gcry_cipher_setkey_t setkey;
|
||||
gcry_cipher_encrypt_t encrypt;
|
||||
gcry_cipher_decrypt_t decrypt;
|
||||
gcry_cipher_stencrypt_t stencrypt;
|
||||
gcry_cipher_stdecrypt_t stdecrypt;
|
||||
} gcry_cipher_spec_t;
|
||||
|
||||
|
||||
/* ********************** */
|
||||
|
||||
/* Type for the pk_generate function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_generate_t) (int algo,
|
||||
unsigned int nbits,
|
||||
unsigned long use_e,
|
||||
gcry_mpi_t *skey,
|
||||
gcry_mpi_t **retfactors);
|
||||
|
||||
/* Type for the pk_check_secret_key function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_check_secret_key_t) (int algo,
|
||||
gcry_mpi_t *skey);
|
||||
|
||||
/* Type for the pk_encrypt function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_encrypt_t) (int algo,
|
||||
gcry_mpi_t *resarr,
|
||||
gcry_mpi_t data,
|
||||
gcry_mpi_t *pkey,
|
||||
int flags);
|
||||
|
||||
/* Type for the pk_decrypt function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_decrypt_t) (int algo,
|
||||
gcry_mpi_t *result,
|
||||
gcry_mpi_t *data,
|
||||
gcry_mpi_t *skey,
|
||||
int flags);
|
||||
|
||||
/* Type for the pk_sign function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_sign_t) (int algo,
|
||||
gcry_mpi_t *resarr,
|
||||
gcry_mpi_t data,
|
||||
gcry_mpi_t *skey);
|
||||
|
||||
/* Type for the pk_verify function. */
|
||||
typedef gcry_err_code_t (*gcry_pk_verify_t) (int algo,
|
||||
gcry_mpi_t hash,
|
||||
gcry_mpi_t *data,
|
||||
gcry_mpi_t *pkey,
|
||||
int (*cmp) (void *, gcry_mpi_t),
|
||||
void *opaquev);
|
||||
|
||||
/* Type for the pk_get_nbits function. */
|
||||
typedef unsigned (*gcry_pk_get_nbits_t) (int algo, gcry_mpi_t *pkey);
|
||||
|
||||
/* Module specification structure for message digests. */
|
||||
typedef struct gcry_pk_spec
|
||||
{
|
||||
const char *name;
|
||||
const char **aliases;
|
||||
const char *elements_pkey;
|
||||
const char *elements_skey;
|
||||
const char *elements_enc;
|
||||
const char *elements_sig;
|
||||
const char *elements_grip;
|
||||
int use;
|
||||
gcry_pk_generate_t generate;
|
||||
gcry_pk_check_secret_key_t check_secret_key;
|
||||
gcry_pk_encrypt_t encrypt;
|
||||
gcry_pk_decrypt_t decrypt;
|
||||
gcry_pk_sign_t sign;
|
||||
gcry_pk_verify_t verify;
|
||||
gcry_pk_get_nbits_t get_nbits;
|
||||
} gcry_pk_spec_t;
|
||||
|
||||
|
||||
/* ********************** */
|
||||
|
||||
/* Type for the md_init function. */
|
||||
typedef void (*gcry_md_init_t) (void *c);
|
||||
|
||||
/* Type for the md_write function. */
|
||||
typedef void (*gcry_md_write_t) (void *c, const void *buf, size_t nbytes);
|
||||
|
||||
/* Type for the md_final function. */
|
||||
typedef void (*gcry_md_final_t) (void *c);
|
||||
|
||||
/* Type for the md_read function. */
|
||||
typedef unsigned char *(*gcry_md_read_t) (void *c);
|
||||
|
||||
typedef struct gcry_md_oid_spec
|
||||
{
|
||||
const char *oidstring;
|
||||
} gcry_md_oid_spec_t;
|
||||
|
||||
/* Module specification structure for message digests. */
|
||||
typedef struct gcry_md_spec
|
||||
{
|
||||
const char *name;
|
||||
unsigned char *asnoid;
|
||||
int asnlen;
|
||||
gcry_md_oid_spec_t *oids;
|
||||
int mdlen;
|
||||
gcry_md_init_t init;
|
||||
gcry_md_write_t write;
|
||||
gcry_md_final_t final;
|
||||
gcry_md_read_t read;
|
||||
size_t contextsize; /* allocate this amount of context */
|
||||
} gcry_md_spec_t;
|
||||
|
||||
#if 0 /* keep Emacsens's auto-indent happy */
|
||||
{
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*GCRYPT_MODULE_H*/
|
Loading…
Add table
Add a link
Reference in a new issue