Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/nghttp2/../libucrypto.h
Real path: /usr/include/libucrypto.h
Zurück
/* * Copyright (c) 2010, 2021, Oracle and/or its affiliates. */ #ifndef _LIBUCRYPTO_H #define _LIBUCRYPTO_H #ifdef __cplusplus extern "C" { #endif #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> #include <strings.h> #include <sys/crypto/spi.h> #include <sys/crypto/api.h> /* * Mechanism list for ucrypto. * * New enum values may be added to the end, and make parallel updates to * mechstrlist[] in the libucrypto library and to the cryptosvc.xml file. * * Updates may also be needed * to aes_mech_type_t in the AES crypto module, * to camellia_mech_type_t in the CAMELLIA crypto module, * to rsa_mech_type_t in the RSA crypto module or * to hmac_mech_type_t in the HMAC module, as appropriate. * * The mechanism value of 0 is reserved for invalid mechanism. * * Older versions of JDK hardwired these enum values. Do not change existing * enum values. */ typedef enum ucrypto_mech { CRYPTO_AES_ECB = 1, CRYPTO_AES_CBC, CRYPTO_AES_CBC_PAD, CRYPTO_AES_CTR, CRYPTO_AES_CCM, CRYPTO_AES_GCM, CRYPTO_AES_GMAC, CRYPTO_AES_CFB128, CRYPTO_AES_XTS, CRYPTO_AES_XCBC_MAC, CRYPTO_AES_XCBC_MAC_96, CRYPTO_CAMELLIA_ECB = 12, CRYPTO_CAMELLIA_CBC, CRYPTO_CAMELLIA_CTR, CRYPTO_CAMELLIA_CBC_PAD, /* Unsupported */ CRYPTO_AES_CMAC, CRYPTO_AES_CTS, CRYPTO_DES_ECB, CRYPTO_DES_CBC, CRYPTO_DES_CBC_PAD, CRYPTO_DES3_ECB, CRYPTO_DES3_CBC, CRYPTO_DES3_CBC_PAD, CRYPTO_AES_CFB8, CRYPTO_CAMELLIA_CTS, CRYPTO_RC4 = 30, CRYPTO_RSA_PKCS = 31, CRYPTO_RSA_X_509, CRYPTO_MD5_RSA_PKCS, CRYPTO_SHA1_RSA_PKCS, CRYPTO_SHA256_RSA_PKCS, CRYPTO_SHA384_RSA_PKCS, CRYPTO_SHA512_RSA_PKCS, CRYPTO_SHA224_RSA_PKCS, CRYPTO_DSA, CRYPTO_DSA_SHA1, CRYPTO_SHA224_DSA, CRYPTO_SHA256_DSA, CRYPTO_SHA384_DSA, CRYPTO_SHA512_DSA, CRYPTO_DH_PKCS, /* = 45 */ CRYPTO_ECDSA = 50, CRYPTO_ECDSA_SHA1, CRYPTO_ECDSA_SHA224, CRYPTO_ECDSA_SHA256, CRYPTO_ECDSA_SHA384, CRYPTO_ECDSA_SHA512, /* = 55 */ CRYPTO_MD5 = 93, CRYPTO_MD5_HMAC, CRYPTO_MD5_HMAC_GEN, CRYPTO_SHA1, CRYPTO_SHA1_HMAC, CRYPTO_SHA1_HMAC_GEN, CRYPTO_SHA224, CRYPTO_SHA224_HMAC, CRYPTO_SHA224_HMAC_GEN, CRYPTO_SHA256, CRYPTO_SHA256_HMAC, CRYPTO_SHA256_HMAC_GEN, CRYPTO_SHA384, CRYPTO_SHA384_HMAC, CRYPTO_SHA384_HMAC_GEN, CRYPTO_SHA512, CRYPTO_SHA512_HMAC, CRYPTO_SHA512_HMAC_GEN, CRYPTO_SHA512_160, CRYPTO_SHA512_160_HMAC, CRYPTO_SHA512_160_HMAC_GEN, CRYPTO_SHA512_224, CRYPTO_SHA512_224_HMAC, CRYPTO_SHA512_224_HMAC_GEN, CRYPTO_SHA512_256, CRYPTO_SHA512_256_HMAC, CRYPTO_SHA512_256_HMAC_GEN, /* 120-125 are reserved for SHA512_T helper mechanisms. Do not use! */ CRYPTO_SHA512_T = 126, CRYPTO_SHA512_T_HMAC, CRYPTO_SHA512_T_HMAC_GEN, CRYPTO_SHA3_224, CRYPTO_SHA3_224_HMAC, CRYPTO_SHA3_224_HMAC_GEN, CRYPTO_SHA3_256, CRYPTO_SHA3_256_HMAC, CRYPTO_SHA3_256_HMAC_GEN, CRYPTO_SHA3_384, CRYPTO_SHA3_384_HMAC, CRYPTO_SHA3_384_HMAC_GEN, CRYPTO_SHA3_512, CRYPTO_SHA3_512_HMAC, CRYPTO_SHA3_512_HMAC_GEN, CRYPTO_AES_KEY_GEN = 200, CRYPTO_BLOWFISH_KEY_GEN, CRYPTO_CAMELLIA_KEY_GEN, CRYPTO_DES2_KEY_GEN, CRYPTO_DES3_KEY_GEN, CRYPTO_DES_KEY_GEN, CRYPTO_DH_PKCS_KEY_PAIR_GEN, CRYPTO_DSA_KEY_PAIR_GEN, CRYPTO_ECDSA_KEY_PAIR_GEN, CRYPTO_EC_KEY_PAIR_GEN, CRYPTO_RC4_KEY_GEN, CRYPTO_RSA_PKCS_KEY_PAIR_GEN, CRYPTO_GENERIC_SECRET_KEY_GEN } ucrypto_mech_t; #define IS_GEN_MECH(mech) \ ((mech == CRYPTO_MD5_HMAC_GEN) || \ (mech == CRYPTO_SHA1_HMAC_GEN) || \ (mech == CRYPTO_SHA224_HMAC_GEN) || \ (mech == CRYPTO_SHA256_HMAC_GEN) || \ (mech == CRYPTO_SHA384_HMAC_GEN) || \ (mech == CRYPTO_SHA512_HMAC_GEN) || \ (mech == CRYPTO_SHA512_160_HMAC_GEN) || \ (mech == CRYPTO_SHA512_224_HMAC_GEN) || \ (mech == CRYPTO_SHA512_256_HMAC_GEN) || \ (mech == CRYPTO_SHA512_T_HMAC_GEN) || \ (mech == CRYPTO_SHA3_224_HMAC_GEN) || \ (mech == CRYPTO_SHA3_256_HMAC_GEN) || \ (mech == CRYPTO_SHA3_384_HMAC_GEN) || \ (mech == CRYPTO_SHA3_512_HMAC_GEN)) /* Encrypt multi-part */ extern int crypto_encrypt_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_encrypt_update(crypto_context_t ctx, crypto_data_t *plaintext, crypto_data_t *ciphertext, crypto_call_req_t *cr); extern int crypto_encrypt_final(crypto_context_t ctx, crypto_data_t *ciphertext, crypto_call_req_t *cr); extern int ucrypto_encrypt_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len); extern int ucrypto_encrypt_update(crypto_ctx_t *context, const uchar_t *in, size_t in_len, uchar_t *out, size_t *out_len); extern int ucrypto_encrypt_final(crypto_ctx_t *context, uchar_t *out, size_t *out_len); /* Encrypt atomic */ extern int crypto_encrypt(crypto_mechanism_t *mech, crypto_data_t *plaintext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext, crypto_call_req_t *cr); extern int ucrypto_encrypt(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len, const uchar_t *in, size_t in_len, uchar_t *out, size_t *out_len); /* Decrypt multi-part */ extern int ucrypto_decrypt_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len); extern int ucrypto_decrypt_update(crypto_ctx_t *context, const uchar_t *in, size_t in_len, uchar_t *out, size_t *out_len); extern int ucrypto_decrypt_final(crypto_ctx_t *context, uchar_t *out, size_t *out_len); extern int crypto_decrypt_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_decrypt_update(crypto_context_t ctx, crypto_data_t *ciphertext, crypto_data_t *plaintext, crypto_call_req_t *cr); extern int crypto_decrypt_final(crypto_context_t ctx, crypto_data_t *plaintext, crypto_call_req_t *cr); /* Decrypt atomic */ extern int crypto_decrypt(crypto_mechanism_t *mech, crypto_data_t *ciphertext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext, crypto_call_req_t *cr); extern int ucrypto_decrypt(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len, uchar_t *in, size_t in_len, uchar_t *out, size_t *out_len); /* Sign multi-part */ extern int crypto_sign_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_sign_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_sign_final(crypto_context_t ctx, crypto_data_t *signature, crypto_call_req_t *cr); extern int ucrypto_sign_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len); extern int ucrypto_sign_update(crypto_ctx_t *context, const uchar_t *data_str, size_t data_len); extern int ucrypto_sign_final(crypto_ctx_t *context, uchar_t *sig_str, size_t *sig_len); /* Sign atomic */ extern int crypto_sign(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *data, crypto_ctx_template_t tmpl, crypto_data_t *signature, crypto_call_req_t *cr); extern int ucrypto_sign(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len, const uchar_t *data_str, size_t data_len, uchar_t *sig_str, size_t *sig_len); /* Verify multi-part */ extern int crypto_verify_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_verify_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_verify_final(crypto_context_t ctx, crypto_data_t *signature, crypto_call_req_t *cr); extern int ucrypto_verify_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len); extern int ucrypto_verify_update(crypto_ctx_t *context, const uchar_t *data_str, size_t data_len); extern int ucrypto_verify_final(crypto_ctx_t *context, uchar_t *sig_str, size_t *sig_len); /* Verify atomic */ extern int crypto_verify(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *data, crypto_ctx_template_t tmpl, crypto_data_t *signature, crypto_call_req_t *cr); extern int ucrypto_verify(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, void *iv, size_t iv_len, const uchar_t *data_str, size_t data_len, uchar_t *sig, size_t *sig_len); /* Digest multi-part */ extern int ucrypto_digest_length(crypto_ctx_t *context, size_t *digest_len); extern int crypto_digest_init(crypto_mechanism_t *mech, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_digest_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_digest_final(crypto_context_t ctx, crypto_data_t *digest, crypto_call_req_t *cr); extern int ucrypto_digest_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const void *param, size_t param_len); extern int ucrypto_digest_update(crypto_ctx_t *context, const uchar_t *data, size_t data_len); extern int ucrypto_digest_final(crypto_ctx_t *context, uchar_t *digest, size_t *digest_len); /* Digest atomic */ extern int crypto_digest(crypto_mechanism_t *mech, crypto_data_t *data, crypto_data_t *digest, crypto_call_req_t *cr); extern int ucrypto_digest(ucrypto_mech_t mech_type, const void *param, size_t param_len, const uchar_t *data, size_t data_len, uchar_t *digest, size_t *digest_len); /* MAC multi-part */ extern int crypto_mac_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_mac_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_mac_final(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int ucrypto_mac_init(crypto_ctx_t *context, ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, const void *param, size_t param_len); extern int ucrypto_mac_update(crypto_ctx_t *context, const uchar_t *data, size_t data_len); extern int ucrypto_mac_final(crypto_ctx_t *context, uchar_t *mac, size_t *mac_len); /* MAC atomic */ extern int crypto_mac(crypto_mechanism_t *mech, crypto_data_t *data, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac, crypto_call_req_t *cr); extern int crypto_mac_verify(crypto_mechanism_t *mech, crypto_data_t *data, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac, crypto_call_req_t *cr); extern int ucrypto_mac(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, const void *param, size_t param_len, const uchar_t *data, size_t data_len, uchar_t *mac, size_t *mac_len); extern int ucrypto_mac_verify(ucrypto_mech_t mech_type, const uchar_t *key_str, size_t key_len, const void *param, size_t param_len, const uchar_t *data, size_t data_len, uchar_t *mac, size_t mac_len); /* Key generation */ extern int crypto_key_generate(crypto_mechanism_t *mech, crypto_object_attribute_t *tmpl, uint_t tmpl_len, crypto_key_t *key, crypto_call_req_t *cr); extern int crypto_key_generate_pair(crypto_mechanism_t *mech, crypto_object_attribute_t *pub_tmpl, uint_t pub_tmpl_len, crypto_object_attribute_t *priv_tmpl, uint_t priv_tmpl_len, crypto_key_t *pub_key, crypto_key_t *priv_key, crypto_call_req_t *cr); /* TLS functions */ extern int ucrypto_tls11_prf(const uint8_t *secret, size_t secretlen, const uint8_t *label, size_t labellen, const uint8_t *rand1, size_t rand1len, const uint8_t *rand2, size_t rand2len, uint8_t *result, size_t resultlen); extern int ucrypto_tls12_prf(ucrypto_mech_t mech, const uint8_t *secret, size_t secretlen, const uint8_t *label, size_t labellen, const uint8_t *seed, size_t seedlen, uint8_t *result, size_t resultlen); /* Clean up crypto context */ extern void ucrypto_free_context(crypto_ctx_t *context); /* * Sets in the given pointer a delimited string of supported mechanisms * with their value number specified in ucrypto_mech_t. There is no * whitespace in the string. The return value is the length of the string. * If the pointer given is NULL, the function will return the length of the * string. * * The format is as below: * < number of supported mechanisms >: \ * < name of mechanism >,< number of mechanism >; \ * < name of mechanism >,< number of mechanism >; \ * ... repeat until finished. */ extern int ucrypto_get_mechlist(char *str); /* * Returns the mechanism string or property value for a given mechanism id * number. These will return NULL for invalid mechanisms. */ extern const char *ucrypto_id2mech(ucrypto_mech_t mech_type); extern const char *ucrypto_id2prop(ucrypto_mech_t mech_type); /* * Returns the mechanism id number for a given mechanism string. * This will return 0 for invalid mechanisms. */ extern ucrypto_mech_t ucrypto_mech2id(const char *str); /* Returns the version of this library */ extern int ucrypto_version(void); /* Returns string representation of the error code passed */ extern char *ucrypto_strerror(int); /* String/number conversion of crypto attributes, objects, and keys */ extern const char *crypto_attr2str(crypto_attr_type_t attr); extern int crypto_str2attr(const char *attr_str, crypto_attr_type_t *attr); extern const char *crypto_obj2str(crypto_object_id_t obj); extern int crypto_str2obj(const char *obj_str, crypto_object_id_t *obj); extern const char *crypto_key2str(uint32_t key); extern int crypto_str2key(const char *key_str, uint32_t *key); #ifdef __cplusplus } #endif #endif /* _LIBUCRYPTO_H */