Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
KNET_HAN...ET_CONFIG(3)   Kronosnet Programmer's Manual  KNET_HAN...ET_CONFIG(3)

NAME
     knet_handle_crypto_set_config  -  set up packet cryptographic signing & en-
     cryption

SYNOPSIS
     #include <libknet.h>

     int knet_handle_crypto_set_config(
	 knet_handle_t			  knet_h,
	 struct knet_handle_crypto_cfg	 *knet_handle_crypto_cfg,
	 uint8_t			  config_num
     );

DESCRIPTION
     knet_handle_crypto_set_config

     knet_h - pointer to knet_handle_t

     knet_handle_crypto_cfg - pointer to a knet_handle_crypto_cfg structure

     crypto_model should contain the model name. Currently  only  "openssl"  and
     "nss" are supported. Setting to "none" will disable crypto.

     crypto_cipher_type  should  contain  the cipher algo name. It can be set to
     "none" to disable encryption. Currently supported by "nss" model: "aes128",
     "aes192" and "aes256". "openssl" model supports more modes and it	strictly
     depends  on  the  openssl build. See: EVP_get_cipherbyname openssl API call
     for details.

     crypto_hash_type should contain the hashing algo name. It	can  be  set  to
     "none"  to  disable  hashing.  Currently  supported  by "nss" model: "md5",
     "sha1", "sha256", "sha384" and  "sha512".	"openssl"  model  supports  more
     modes  and it strictly depends on the openssl build. See: EVP_get_digestby-
     name openssl API call for details.

     private_key will contain the private shared key. It  has  to  be  at  least
     KNET_MIN_KEY_LEN long.

     private_key_len length of the provided private_key.

     config_num  -  knet supports 2 concurrent sets of crypto configurations, to
     allow runtime change of crypto config and keys. On RX  both  configurations
     will  be used sequentially in an attempt to decrypt/validate a packet (when
     2 are available). Note that this might slow down performance during  a  re-
     configuration.  See also knet_handle_crypto_rx_clear_traffic(3) to enable /
     disable processing of clear (unencrypted) traffic. For TX, the  user  needs
     to specify which configuration to use via knet_handle_crypto_use_config(3).
     config_num accepts 0, 1 or 2 as the value. 0 should be used when all crypto
     is  being disabled. Calling knet_handle_crypto_set_config(3) twice with the
     same config_num will REPLACE the configuration and NOT activate the  second
     key.  If  the configuration is currently in use EBUSY will be returned. See
     also knet_handle_crypto_use_config(3). The correct sequence  to  perform  a
     runtime  rekey  / reconfiguration is:knet_handle_crypto_set_config(..., 1).
     -> first time config, will use config1

     knet_handle_crypto_use_config(..., 1). -> switch TX to config 1

     knet_handle_crypto_set_config(..., 2). -> install config2 and use	it  only
     for RX

     knet_handle_crypto_use_config(..., 2). -> switch TX to config 2

     knet_handle_crypto_set_config(...,  1). -> with a "none"/"none"/"none" con-
     figuration to release the resources previously allocated The application is
     responsible for synchronizing calls on the nodes to make sure the new  con-
     fig  is  in  place  before switching the TX configuration. Failure to do so
     will result in knet being unable to talk to some of the nodes.

     Implementation notes/current limitations:enabling crypto, will increase la-
     tency as packets have to processed.

     enabling crypto might reduce the overall throughtput  due	to  crypto  data
     overhead.

     private/public key encryption/hashing is not currently planned.

     crypto  key must be the same for all hosts in the same knet instance / con-
     figX.

     it is safe to call knet_handle_crypto_set_config multiple times at runtime.
     The  last	config	will  be  used.   IMPORTANT:   a   call   to   knet_han-
     dle_crypto_set_config  can fail due to: 1) failure to obtain locking 2) er-
     rors to initializing the crypto level. This can happen even  in  subsequent
     calls  to	knet_handle_crypto_set_config(3).  A failure in crypto init will
     restore the previous crypto configuration if any.

STRUCTURES
     Structure passed into knet_handle_set_crypto_config() to determine the crypto options to use for the current communications handle

     struct knet_handle_crypto_cfg {
	 char		crypto_model[16];		/* Model to use. nss, openssl, etc */
	 char		crypto_cipher_type[16]; 	/* Cipher type name for encryption. aes 256 etc */
	 char		crypto_hash_type[16];		/* Hash type for digest. sha512 etc */
	 unsigned char	private_key[KNET_MAX_KEY_LEN];	/* Private key */
	 unsigned int	private_key_len;		/* Length of private key */
     };

RETURN VALUE
     knet_handle_crypto_set_config returns:

     0		on success

     -1 	on error and errno is set.

     -2 	on crypto subsystem initialization error. No errno  is	provided
     at the moment (yet).

SEE ALSO
     knet_handle_remove_datafd(3), knet_handle_get_stats(3), knet_host_add(3),
     knet_handle_pmtud_setfreq(3), knet_handle_pmtud_get(3),
     knet_handle_crypto_use_config(3), knet_host_get_id_by_host_name(3),
     knet_host_get_status(3), knet_link_add_acl(3), knet_link_get_pong_count(3),
     knet_link_get_priority(3), knet_handle_free(3),
     knet_handle_enable_sock_notify(3), knet_handle_get_datafd(3), knet_recv(3),
     knet_link_get_ping_timers(3), knet_log_get_subsystem_id(3),
     knet_host_remove(3), knet_host_enable_status_change_notify(3),
     knet_strtoaddr(3), knet_link_rm_acl(3), knet_send(3),
     knet_handle_enable_pmtud_notify(3),
     knet_handle_get_transport_reconnect_interval(3), knet_link_get_enable(3),
     knet_link_set_priority(3), knet_log_set_loglevel(3),
     knet_handle_get_channel(3), knet_link_get_config(3),
     knet_link_get_link_list(3), knet_get_transport_list(3),
     knet_get_transport_id_by_name(3), knet_log_get_loglevel_id(3),
     knet_handle_new_ex(3), knet_host_set_name(3), knet_addrtostr(3),
     knet_handle_setfwd(3), knet_get_compress_list(3), knet_host_set_policy(3),
     knet_get_transport_name_by_id(3), knet_handle_enable_filter(3),
     knet_handle_crypto_rx_clear_traffic(3), knet_handle_compress(3),
     knet_link_get_status(3), knet_handle_add_datafd(3), knet_send_sync(3),
     knet_log_get_loglevel_name(3), knet_handle_enable_access_lists(3),
     knet_host_get_host_list(3), knet_host_get_policy(3),
     knet_link_set_enable(3), knet_link_set_pong_count(3),
     knet_log_get_subsystem_name(3), knet_host_get_name_by_host_id(3),
     knet_link_clear_config(3), knet_log_get_loglevel(3), knet_handle_new(3),
     knet_handle_pmtud_getfreq(3), knet_handle_pmtud_set(3),
     knet_handle_clear_stats(3), knet_link_set_config(3), knet_handle_crypto(3),
     knet_get_crypto_list(3), knet_handle_set_transport_reconnect_interval(3),
     knet_link_clear_acl(3), knet_link_set_ping_timers(3),
     knet_link_insert_acl(3)

COPYRIGHT
     Copyright (C) 2010-2023 Red Hat, Inc. All rights reserved.

kronosnet			   2023-07-10		 KNET_HAN...ET_CONFIG(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=knet_handle_crypto_set_config&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help