|  | @@ -23,9 +23,9 @@
 | 
	
		
			
				|  |  |  #include <memory>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <grpcpp/support/config.h>
 | 
	
		
			
				|  |  | +#include <grpc/support/log.h>
 | 
	
		
			
				|  |  |  #include <grpc/grpc_security.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  namespace grpc_impl {
 | 
	
		
			
				|  |  |  namespace experimental {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -57,6 +57,163 @@ class TlsKeyMaterialsConfig {
 | 
	
		
			
				|  |  |    ::grpc::string pem_root_certs_;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/** TLS credential reload arguments, wraps grpc_tls_credential_reload_arg. **/
 | 
	
		
			
				|  |  | +typedef class TlsCredentialReloadArg TlsCredentialReloadArg;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +typedef void (*grpcpp_tls_on_credential_reload_done_cb)(TlsCredentialReloadArg* arg);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class TlsCredentialReloadArg {
 | 
	
		
			
				|  |  | + public:
 | 
	
		
			
				|  |  | +  /** Getters for member fields. **/
 | 
	
		
			
				|  |  | +  grpcpp_tls_on_credential_reload_done_cb cb() const {
 | 
	
		
			
				|  |  | +    return cb_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  void* cb_user_data() const {
 | 
	
		
			
				|  |  | +    return cb_user_data_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config() const {
 | 
	
		
			
				|  |  | +    return key_materials_config_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  grpc_ssl_certificate_config_reload_status status() const {
 | 
	
		
			
				|  |  | +    return status_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  ::grpc::string error_details() const {
 | 
	
		
			
				|  |  | +    return error_details_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /** Setters for member fields. **/
 | 
	
		
			
				|  |  | +  void set_cb(grpcpp_tls_on_credential_reload_done_cb cb);
 | 
	
		
			
				|  |  | +  void set_cb_user_data(void* cb_user_data);
 | 
	
		
			
				|  |  | +  void set_key_materials_config(::std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config);
 | 
	
		
			
				|  |  | +  void set_status(grpc_ssl_certificate_config_reload_status status);
 | 
	
		
			
				|  |  | +  void set_error_details(::grpc::string error_details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /** Creates C struct for credential reload arg. **/
 | 
	
		
			
				|  |  | +  grpc_tls_credential_reload_arg* c_credential_reload_arg() const;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + private:
 | 
	
		
			
				|  |  | +  grpcpp_tls_on_credential_reload_done_cb cb_;
 | 
	
		
			
				|  |  | +  void* cb_user_data_;
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config_;
 | 
	
		
			
				|  |  | +  grpc_ssl_certificate_config_reload_status status_;
 | 
	
		
			
				|  |  | +  ::grpc::string error_details_;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** TLS credential reloag config, wraps grpc_tls_credential_reload_config. **/
 | 
	
		
			
				|  |  | +class TlsCredentialReloadConfig {
 | 
	
		
			
				|  |  | + public:
 | 
	
		
			
				|  |  | +  TlsCredentialReloadConfig(
 | 
	
		
			
				|  |  | +      const void* config_user_data,
 | 
	
		
			
				|  |  | +      int (*schedule)(void* config_user_data, TlsCredentialReloadArg* arg),
 | 
	
		
			
				|  |  | +      void (*cancel)(void* config_user_data, TlsCredentialReloadArg* arg),
 | 
	
		
			
				|  |  | +      void (*destruct)(void* config_user_data));
 | 
	
		
			
				|  |  | +  ~TlsCredentialReloadConfig();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  int Schedule(TlsCredentialReloadArg* arg) const {
 | 
	
		
			
				|  |  | +    return schedule_(config_user_data_, arg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  void Cancel(TlsCredentialReloadArg* arg) const {
 | 
	
		
			
				|  |  | +    if (cancel_ == nullptr) {
 | 
	
		
			
				|  |  | +      gpr_log(GPR_ERROR, "cancel API is nullptr");
 | 
	
		
			
				|  |  | +      return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    cancel_(config_user_data_, arg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +grpc_tls_credential_reload_config* c_credential_reload() const;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + private:
 | 
	
		
			
				|  |  | +  void* config_user_data_;
 | 
	
		
			
				|  |  | +  int (*schedule_)(void* config_user_data, TlsCredentialReloadArg* arg);
 | 
	
		
			
				|  |  | +  void (*cancel_)(void* config_user_data, TlsCredentialReloadArg* arg);
 | 
	
		
			
				|  |  | +  void (*destruct_)(void* config_user_data);
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** TLS server authorization check arguments, wraps
 | 
	
		
			
				|  |  | + *  grpc_tls_server_authorization_check_arg. **/
 | 
	
		
			
				|  |  | +typedef class TlsServerAuthorizationCheckArg TlsServerAuthorizationCheckArg;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +typedef void (*grpcpp_tls_on_server_authorization_check_done_cb)(
 | 
	
		
			
				|  |  | +    TlsServerAuthorizationCheckArg* arg);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class TlsServerAuthorizationCheckArg {
 | 
	
		
			
				|  |  | + public:
 | 
	
		
			
				|  |  | +  /** Getters for member fields. **/
 | 
	
		
			
				|  |  | +  grpcpp_tls_on_server_authorization_check_done_cb cb() const {
 | 
	
		
			
				|  |  | +    return cb_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  void* cb_user_data() const {
 | 
	
		
			
				|  |  | +    return cb_user_data_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  int success() const {
 | 
	
		
			
				|  |  | +    return success_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  ::grpc::string peer_cert() const {
 | 
	
		
			
				|  |  | +    return peer_cert_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  grpc_status_code status() const {
 | 
	
		
			
				|  |  | +    return status_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  ::grpc::string error_details() const {
 | 
	
		
			
				|  |  | +    return error_details_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /** Setters for member fields. **/
 | 
	
		
			
				|  |  | +  void set_cb(grpcpp_tls_on_server_authorization_check_done_cb cb);
 | 
	
		
			
				|  |  | +  void set_cb_user_data(void* cb_user_data);
 | 
	
		
			
				|  |  | +  void set_success(int success);
 | 
	
		
			
				|  |  | +  void set_peer_cert(::grpc::string peer_cert);
 | 
	
		
			
				|  |  | +  void set_status(grpc_status_code status);
 | 
	
		
			
				|  |  | +  void set_error_details(::grpc::string error_details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /** Creates C struct for credential reload arg. **/
 | 
	
		
			
				|  |  | +  grpc_tls_credential_reload_arg* c_credential_reload_arg() const;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + private:
 | 
	
		
			
				|  |  | +  grpcpp_tls_on_server_authorization_check_done_cb cb_;
 | 
	
		
			
				|  |  | +  void* cb_user_data_;
 | 
	
		
			
				|  |  | +  int success_;
 | 
	
		
			
				|  |  | +  ::grpc::string target_name_;
 | 
	
		
			
				|  |  | +  ::grpc::string peer_cert_;
 | 
	
		
			
				|  |  | +  grpc_status_code status_;
 | 
	
		
			
				|  |  | +  ::grpc::string error_details_;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** TLS server authorization check config, wraps
 | 
	
		
			
				|  |  | + *  grps_tls_server_authorization_check_config. **/
 | 
	
		
			
				|  |  | +class TlsServerAuthorizationCheckConfig {
 | 
	
		
			
				|  |  | + public:
 | 
	
		
			
				|  |  | +  TlsServerAuthorizationCheckConfig(
 | 
	
		
			
				|  |  | +      const void* config_user_data,
 | 
	
		
			
				|  |  | +      int (*schedule)(void* config_user_data, TlsServerAuthorizationCheckArg* arg),
 | 
	
		
			
				|  |  | +      void (*cancel)(void* config_user_data, TlsServerAuthorizationCheckArg* arg),
 | 
	
		
			
				|  |  | +      void (*destruct)(void* config_user_data));
 | 
	
		
			
				|  |  | +  ~TlsServerAuthorizationCheckConfig();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  int Schedule(TlsServerAuthorizationCheckArg* arg) const {
 | 
	
		
			
				|  |  | +    return schedule_(config_user_data_, arg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  void Cancel(TlsServerAuthorizationCheckArg* arg) const {
 | 
	
		
			
				|  |  | +    if (cancel_ == nullptr) {
 | 
	
		
			
				|  |  | +      gpr_log(GPR_ERROR, "cancel API is nullptr");
 | 
	
		
			
				|  |  | +      return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    cancel_(config_user_data_, arg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  grpc_tls_server_authorization_check_config* c_server_authorization_check() const;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + private:
 | 
	
		
			
				|  |  | +    void* config_user_data_;
 | 
	
		
			
				|  |  | +    int (*schedule_)(void* config_user_data, TlsServerAuthorizationCheckArg* arg);
 | 
	
		
			
				|  |  | +    void (*cancel_)(void* config_user_data, TlsServerAuthorizationCheckArg* arg);
 | 
	
		
			
				|  |  | +    void (*destruct_)(void* config_user_data);
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /** TLS credentials options, wrapper for grpc_tls_credentials_options. **/
 | 
	
		
			
				|  |  |  class TlsCredentialsOptions {
 | 
	
		
			
				|  |  |   public:
 | 
	
	
		
			
				|  | @@ -67,24 +224,40 @@ class TlsCredentialsOptions {
 | 
	
		
			
				|  |  |    std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config() const {
 | 
	
		
			
				|  |  |      return key_materials_config_;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config() const {
 | 
	
		
			
				|  |  | +    return credential_reload_config_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsServerAuthorizationCheckConfig> server_authorization_check_config() const {
 | 
	
		
			
				|  |  | +    return server_authorization_check_config_;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /** Setters for member fields. **/
 | 
	
		
			
				|  |  |    void set_cert_request_type(
 | 
	
		
			
				|  |  |        const grpc_ssl_client_certificate_request_type type) {
 | 
	
		
			
				|  |  |      cert_request_type_ = type;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    void set_key_materials_config(
 | 
	
		
			
				|  |  |        std::shared_ptr<TlsKeyMaterialsConfig> config) {
 | 
	
		
			
				|  |  |      key_materials_config_ = config;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  void set_credential_reload_config(
 | 
	
		
			
				|  |  | +      ::std::shared_ptr<TlsCredentialReloadConfig> config) {
 | 
	
		
			
				|  |  | +    credential_reload_config_ = config;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  void set_server_authorization_check_config(
 | 
	
		
			
				|  |  | +      ::std::shared_ptr<TlsServerAuthorizationCheckConfig> config) {
 | 
	
		
			
				|  |  | +    server_authorization_check_config_ = config;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /** Creates C struct for TLS credential options. **/
 | 
	
		
			
				|  |  |    grpc_tls_credentials_options* c_credentials_options() const;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |   private:
 | 
	
		
			
				|  |  |    grpc_ssl_client_certificate_request_type cert_request_type_;
 | 
	
		
			
				|  |  | -  std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config_;
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config_;
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config_;
 | 
	
		
			
				|  |  | +  ::std::shared_ptr<TlsServerAuthorizationCheckConfig> server_authorization_check_config_;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  } // namespace experimental
 |