X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilcpkcs.h;h=eeaa240586c1a6878d280ba68fca094b2c778c68;hb=40f8443d8d3a6577336ee66d18e04d9ac4d956bb;hp=32463d11bbb2632d179aedd8f03d04c3057f2619;hpb=c257b555225193e54d85daf541d29578b3c93882;p=silc.git diff --git a/lib/silccrypt/silcpkcs.h b/lib/silccrypt/silcpkcs.h index 32463d11..eeaa2405 100644 --- a/lib/silccrypt/silcpkcs.h +++ b/lib/silccrypt/silcpkcs.h @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2003 Pekka Riikonen + Copyright (C) 1997 - 2005 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,10 +53,33 @@ ***/ typedef struct SilcPKCSStruct *SilcPKCS; +/****d* silccrypt/SilcPKCSAPI/SilcPKCSType + * + * NAME + * + * typedef enum { ... } SilcPKCSType + * + * DESCRIPTION + * + * Public key cryptosystem types. These are defined by the SILC + * Key Exchange protocol. + * + * SOURCE + */ +typedef enum { + SILC_PKCS_SILC = 1, /* SILC PKCS (mandatory) */ + SILC_PKCS_SSH2 = 2, /* SSH2 PKCS (not supported) */ + SILC_PKCS_X509V3 = 3, /* X.509v3 PKCS (not supported) */ + SILC_PKCS_OPENPGP = 4, /* OpenPGP PKCS (not supported) */ + SILC_PKCS_SPKI = 5, /* SPKI PKCS (not supported) */ +} SilcPKCSType; +/***/ + /* The default SILC PKCS (Public Key Cryptosystem) object to represent any PKCS in SILC. */ typedef struct SilcPKCSObjectStruct { char *name; + SilcPKCSType type; int (*init)(void *, SilcUInt32, SilcRng); void (*clear_keys)(void *); unsigned char *(*get_public_key)(void *, SilcUInt32 *); @@ -243,7 +266,7 @@ int silc_##pkcs##_verify(void *context, \ * * SYNOPSIS * - * bool silc_pkcs_register(const SilcPKCSObject *pkcs); + * SilcBool silc_pkcs_register(const SilcPKCSObject *pkcs); * * DESCRIPTION * @@ -256,26 +279,26 @@ int silc_##pkcs##_verify(void *context, \ * builtin the sources. Returns FALSE on error. * ***/ -bool silc_pkcs_register(const SilcPKCSObject *pkcs); +SilcBool silc_pkcs_register(const SilcPKCSObject *pkcs); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_unregister * * SYNOPSIS * - * bool silc_pkcs_unregister(SilcPKCSObject *pkcs); + * SilcBool silc_pkcs_unregister(SilcPKCSObject *pkcs); * * DESCRIPTION * * Unregister a PKCS from the SILC. Returns FALSE on error. * ***/ -bool silc_pkcs_unregister(SilcPKCSObject *pkcs); +SilcBool silc_pkcs_unregister(SilcPKCSObject *pkcs); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_register_default * * SYNOPSIS * - * bool silc_pkcs_register_default(void); + * SilcBool silc_pkcs_register_default(void); * * DESCRIPTION * @@ -284,26 +307,27 @@ bool silc_pkcs_unregister(SilcPKCSObject *pkcs); * order is not wanted. Returns FALSE on error. * ***/ -bool silc_pkcs_register_default(void); +SilcBool silc_pkcs_register_default(void); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_unregister_all * * SYNOPSIS * - * bool silc_pkcs_unregister_all(void); + * SilcBool silc_pkcs_unregister_all(void); * * DESCRIPTION * * Returns FALSE on error. * ***/ -bool silc_pkcs_unregister_all(void); +SilcBool silc_pkcs_unregister_all(void); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_alloc * * SYNOPSIS * - * bool silc_pkcs_alloc(const unsigned char *name, SilcPKCS *new_pkcs); + * SilcBool silc_pkcs_alloc(const unsigned char *name, + * SilcPKCSType type, SilcPKCS *new_pkcs); * * DESCRIPTION * @@ -311,7 +335,8 @@ bool silc_pkcs_unregister_all(void); * to the 'new_pkcs' argument. Returns FALSE on error. * ***/ -bool silc_pkcs_alloc(const unsigned char *name, SilcPKCS *new_pkcs); +SilcBool silc_pkcs_alloc(const unsigned char *name, + SilcPKCSType type, SilcPKCS *new_pkcs); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_free * @@ -330,14 +355,14 @@ void silc_pkcs_free(SilcPKCS pkcs); * * SYNOPSIS * - * bool silc_pkcs_is_supported(const unsigned char *name); + * SilcBool silc_pkcs_is_supported(const unsigned char *name); * * DESCRIPTION * * Returns TRUE if PKCS algorithm `name' is supported. * ***/ -bool silc_pkcs_is_supported(const unsigned char *name); +SilcBool silc_pkcs_is_supported(const unsigned char *name); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_get_supported * @@ -356,7 +381,7 @@ char *silc_pkcs_get_supported(void); * * SYNOPSIS * - * bool silc_pkcs_generate_key(SilcPKCS pkcs, SilcUInt32 bits_key_len, + * SilcBool silc_pkcs_generate_key(SilcPKCS pkcs, SilcUInt32 bits_key_len, * SilcRng rng); * * DESCRIPTION @@ -365,8 +390,8 @@ char *silc_pkcs_get_supported(void); * If the `rng' is NULL global SILC RNG will be used. * ***/ -bool silc_pkcs_generate_key(SilcPKCS pkcs, SilcUInt32 bits_key_len, - SilcRng rng); +SilcBool silc_pkcs_generate_key(SilcPKCS pkcs, SilcUInt32 bits_key_len, + SilcRng rng); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_get_key_len * @@ -492,7 +517,7 @@ SilcUInt32 silc_pkcs_private_key_data_set(SilcPKCS pkcs, unsigned char *prv, * * SYNOPSIS * - * bool silc_pkcs_encrypt(SilcPKCS pkcs, unsigned char *src, + * SilcBool silc_pkcs_encrypt(SilcPKCS pkcs, unsigned char *src, * SilcUInt32 src_len, unsigned char *dst, * SilcUInt32 *dst_len); * @@ -501,14 +526,15 @@ SilcUInt32 silc_pkcs_private_key_data_set(SilcPKCS pkcs, unsigned char *prv, * Encrypts. Returns FALSE on error. * ***/ -bool silc_pkcs_encrypt(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, - unsigned char *dst, SilcUInt32 *dst_len); +SilcBool silc_pkcs_encrypt(SilcPKCS pkcs, unsigned char *src, + SilcUInt32 src_len, + unsigned char *dst, SilcUInt32 *dst_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_decrypt * * SYNOPSIS * - * bool silc_pkcs_decrypt(SilcPKCS pkcs, unsigned char *src, + * SilcBool silc_pkcs_decrypt(SilcPKCS pkcs, unsigned char *src, * SilcUInt32 src_len, unsigned char *dst, * SilcUInt32 *dst_len); * @@ -517,14 +543,15 @@ bool silc_pkcs_encrypt(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, * Decrypts. Returns FALSE on error. * ***/ -bool silc_pkcs_decrypt(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, - unsigned char *dst, SilcUInt32 *dst_len); +SilcBool silc_pkcs_decrypt(SilcPKCS pkcs, unsigned char *src, + SilcUInt32 src_len, + unsigned char *dst, SilcUInt32 *dst_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_sign * * SYNOPSIS * - * bool silc_pkcs_sign(SilcPKCS pkcs, unsigned char *src, + * SilcBool silc_pkcs_sign(SilcPKCS pkcs, unsigned char *src, * SilcUInt32 src_len, unsigned char *dst, * SilcUInt32 *dst_len); * @@ -533,14 +560,14 @@ bool silc_pkcs_decrypt(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, * Generates signature. Returns FALSE on error. * ***/ -bool silc_pkcs_sign(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, - unsigned char *dst, SilcUInt32 *dst_len); +SilcBool silc_pkcs_sign(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, + unsigned char *dst, SilcUInt32 *dst_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_verify * * SYNOPSIS * - * bool silc_pkcs_verify(SilcPKCS pkcs, unsigned char *signature, + * SilcBool silc_pkcs_verify(SilcPKCS pkcs, unsigned char *signature, * SilcUInt32 signature_len, unsigned char *data, * SilcUInt32 data_len); * @@ -550,15 +577,15 @@ bool silc_pkcs_sign(SilcPKCS pkcs, unsigned char *src, SilcUInt32 src_len, * verified against the 'data'. * ***/ -bool silc_pkcs_verify(SilcPKCS pkcs, unsigned char *signature, - SilcUInt32 signature_len, unsigned char *data, - SilcUInt32 data_len); +SilcBool silc_pkcs_verify(SilcPKCS pkcs, unsigned char *signature, + SilcUInt32 signature_len, unsigned char *data, + SilcUInt32 data_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_sign_with_hash * * SYNOPSIS * - * bool silc_pkcs_sign_with_hash(SilcPKCS pkcs, SilcHash hash, + * SilcBool silc_pkcs_sign_with_hash(SilcPKCS pkcs, SilcHash hash, * unsigned char *src, SilcUInt32 src_len, * unsigned char *dst, SilcUInt32 *dst_len); * @@ -568,15 +595,15 @@ bool silc_pkcs_verify(SilcPKCS pkcs, unsigned char *signature, * error. * ***/ -bool silc_pkcs_sign_with_hash(SilcPKCS pkcs, SilcHash hash, - unsigned char *src, SilcUInt32 src_len, - unsigned char *dst, SilcUInt32 *dst_len); +SilcBool silc_pkcs_sign_with_hash(SilcPKCS pkcs, SilcHash hash, + unsigned char *src, SilcUInt32 src_len, + unsigned char *dst, SilcUInt32 *dst_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_verify_with_hash * * SYNOPSIS * - * bool silc_pkcs_verify_with_hash(SilcPKCS pkcs, SilcHash hash, + * SilcBool silc_pkcs_verify_with_hash(SilcPKCS pkcs, SilcHash hash, * unsigned char *signature, * SilcUInt32 signature_len, * unsigned char *data, @@ -588,11 +615,11 @@ bool silc_pkcs_sign_with_hash(SilcPKCS pkcs, SilcHash hash, * the `signature'. Returns FALSE on error. * ***/ -bool silc_pkcs_verify_with_hash(SilcPKCS pkcs, SilcHash hash, - unsigned char *signature, - SilcUInt32 signature_len, - unsigned char *data, - SilcUInt32 data_len); +SilcBool silc_pkcs_verify_with_hash(SilcPKCS pkcs, SilcHash hash, + unsigned char *signature, + SilcUInt32 signature_len, + unsigned char *data, + SilcUInt32 data_len); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_encode_identifier * @@ -748,7 +775,7 @@ silc_pkcs_public_key_data_encode(unsigned char *pk, SilcUInt32 pk_len, * * SYNOPSIS * - * bool silc_pkcs_public_key_decode(unsigned char *data, + * SilcBool silc_pkcs_public_key_decode(unsigned char *data, * SilcUInt32 data_len, * SilcPublicKey *public_key); * @@ -758,14 +785,14 @@ silc_pkcs_public_key_data_encode(unsigned char *pk, SilcUInt32 pk_len, * successful. Allocates new public key as well. * ***/ -bool silc_pkcs_public_key_decode(unsigned char *data, SilcUInt32 data_len, +SilcBool silc_pkcs_public_key_decode(unsigned char *data, SilcUInt32 data_len, SilcPublicKey *public_key); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_public_key_payload_encode * * SYNOPSIS * - * bool silc_pkcs_public_key_payload_encode(SilcPublicKey public_key); + * SilcBool silc_pkcs_public_key_payload_encode(SilcPublicKey public_key); * * DESCRIPTION * @@ -780,7 +807,7 @@ SilcBuffer silc_pkcs_public_key_payload_encode(SilcPublicKey public_key); * * SYNOPSIS * - * bool silc_pkcs_public_key_payload_decode(unsigned char *data, + * SilcBool silc_pkcs_public_key_payload_decode(unsigned char *data, * SilcUInt32 data_len, * SilcPublicKey *public_key); * @@ -791,7 +818,7 @@ SilcBuffer silc_pkcs_public_key_payload_encode(SilcPublicKey public_key); * cannot be decoded. * ***/ -bool silc_pkcs_public_key_payload_decode(unsigned char *data, +SilcBool silc_pkcs_public_key_payload_decode(unsigned char *data, SilcUInt32 data_len, SilcPublicKey *public_key); @@ -799,7 +826,7 @@ bool silc_pkcs_public_key_payload_decode(unsigned char *data, * * SYNOPSIS * - * bool silc_pkcs_public_key_compare(SilcPublicKey key1, + * SilcBool silc_pkcs_public_key_compare(SilcPublicKey key1, * SilcPublicKey key2); * * DESCRIPTION @@ -808,7 +835,7 @@ bool silc_pkcs_public_key_payload_decode(unsigned char *data, * FALSE if they are not same. * ***/ -bool silc_pkcs_public_key_compare(SilcPublicKey key1, SilcPublicKey key2); +SilcBool silc_pkcs_public_key_compare(SilcPublicKey key1, SilcPublicKey key2); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_public_key_copy * @@ -861,7 +888,7 @@ silc_pkcs_private_key_data_encode(unsigned char *prv, SilcUInt32 prv_len, * * SYNOPSIS * - * bool silc_pkcs_private_key_decode(unsigned char *data, + * SilcBool silc_pkcs_private_key_decode(unsigned char *data, * SilcUInt32 data_len, * SilcPrivateKey *private_key); * @@ -871,14 +898,14 @@ silc_pkcs_private_key_data_encode(unsigned char *prv, SilcUInt32 prv_len, * successful. Allocates new private key as well. * ***/ -bool silc_pkcs_private_key_decode(unsigned char *data, SilcUInt32 data_len, +SilcBool silc_pkcs_private_key_decode(unsigned char *data, SilcUInt32 data_len, SilcPrivateKey *private_key); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_save_public_key * * SYNOPSIS * - * bool silc_pkcs_save_public_key(const char *filename, + * SilcBool silc_pkcs_save_public_key(const char *filename, * SilcPublicKey public_key, * SilcUInt32 encoding); * @@ -887,14 +914,14 @@ bool silc_pkcs_private_key_decode(unsigned char *data, SilcUInt32 data_len, * Saves public key into file. Returns FALSE on error. * ***/ -bool silc_pkcs_save_public_key(const char *filename, SilcPublicKey public_key, +SilcBool silc_pkcs_save_public_key(const char *filename, SilcPublicKey public_key, SilcUInt32 encoding); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_save_public_key_data * * SYNOPSIS * - * bool silc_pkcs_save_public_key_data(const char *filename, + * SilcBool silc_pkcs_save_public_key_data(const char *filename, * unsigned char *data, * SilcUInt32 data_len, * SilcUInt32 encoding); @@ -905,14 +932,14 @@ bool silc_pkcs_save_public_key(const char *filename, SilcPublicKey public_key, * data when calling this function. Returns FALSE on error. * ***/ -bool silc_pkcs_save_public_key_data(const char *filename, unsigned char *data, +SilcBool silc_pkcs_save_public_key_data(const char *filename, unsigned char *data, SilcUInt32 data_len, SilcUInt32 encoding); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_save_private_key * * SYNOPSIS * - * bool silc_pkcs_save_private_key(const char *filename, + * SilcBool silc_pkcs_save_private_key(const char *filename, * SilcPrivateKey private_key, * unsigned char *passphrase, * SilcUInt32 passphrase_len, @@ -925,7 +952,7 @@ bool silc_pkcs_save_public_key_data(const char *filename, unsigned char *data, * is AES with 256 bit key in CBC mode. Returns FALSE on error. * ***/ -bool silc_pkcs_save_private_key(const char *filename, +SilcBool silc_pkcs_save_private_key(const char *filename, SilcPrivateKey private_key, unsigned char *passphrase, SilcUInt32 passphrase_len, @@ -935,7 +962,7 @@ bool silc_pkcs_save_private_key(const char *filename, * * SYNOPSIS * - * bool silc_pkcs_load_public_key(const char *filename, + * SilcBool silc_pkcs_load_public_key(const char *filename, * SilcPublicKey *public_key, * SilcUInt32 encoding); * @@ -945,14 +972,14 @@ bool silc_pkcs_save_private_key(const char *filename, * if loading was successful. * ***/ -bool silc_pkcs_load_public_key(const char *filename, SilcPublicKey *public_key, +SilcBool silc_pkcs_load_public_key(const char *filename, SilcPublicKey *public_key, SilcUInt32 encoding); /****f* silccrypt/SilcPKCSAPI/silc_pkcs_load_private_key * * SYNOPSIS * - * bool silc_pkcs_load_private_key(const char *filename, + * SilcBool silc_pkcs_load_private_key(const char *filename, * SilcPrivateKey *private_key, * unsigned char *passphrase, * SilcUInt32 passphrase_len, @@ -965,7 +992,7 @@ bool silc_pkcs_load_public_key(const char *filename, SilcPublicKey *public_key, * key of the private key file. * ***/ -bool silc_pkcs_load_private_key(const char *filename, +SilcBool silc_pkcs_load_private_key(const char *filename, SilcPrivateKey *private_key, unsigned char *passphrase, SilcUInt32 passphrase_len,