git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9512 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2001-01-26 22:46:29 +00:00
parent 7c0cfca247
commit 123f083d26
13 changed files with 5 additions and 89 deletions

View File

@@ -25,7 +25,6 @@ Kerberos 5 server
.Fl -ports= Ns Ar string Oc .Fl -ports= Ns Ar string Oc
.Xc .Xc
.Op Fl -addresses= Ns Ar list of addresses .Op Fl -addresses= Ns Ar list of addresses
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
serves requests for tickets. When it starts, it first checks the flags serves requests for tickets. When it starts, it first checks the flags

View File

@@ -147,7 +147,7 @@ Request an anonymous ticket (which means that the ticket will be
issued to an anonymous principal, typically issued to an anonymous principal, typically
.Dq anonymous@REALM). .Dq anonymous@REALM).
.El .El
.Pp
The following options are only available if The following options are only available if
.Nm .Nm
has been compiled with support for Kerberos 4. The has been compiled with support for Kerberos 4. The

View File

@@ -8,21 +8,15 @@
.Nm krb5_425_conv_principal_ext , .Nm krb5_425_conv_principal_ext ,
.Nm krb5_524_conv_principal .Nm krb5_524_conv_principal
.Nd Converts to and from version 4 principals .Nd Converts to and from version 4 principals
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_425_conv_principal "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_principal *principal" .Fn krb5_425_conv_principal "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_principal *principal"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_425_conv_principal_ext "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_boolean (*func)(krb5_context, krb5_principal)" "krb5_boolean resolve" "krb5_principal *principal" .Fn krb5_425_conv_principal_ext "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_boolean (*func)(krb5_context, krb5_principal)" "krb5_boolean resolve" "krb5_principal *principal"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_524_conv_principal "krb5_context context" "const krb5_principal principal" "char *name" "char *instance" "char *realm" .Fn krb5_524_conv_principal "krb5_context context" "const krb5_principal principal" "char *name" "char *instance" "char *realm"
.Sh DESCRIPTION .Sh DESCRIPTION
Converting between version 4 and version 5 principals can at best be Converting between version 4 and version 5 principals can at best be
described as a mess. described as a mess.
.Pp .Pp
@@ -124,9 +118,7 @@ instances found to belong to a host principal. The
and and
.Fa realm .Fa realm
should be at least 40 characters long. should be at least 40 characters long.
.Sh EXAMPLES .Sh EXAMPLES
Since this is confusing an example is in place. Since this is confusing an example is in place.
.Pp .Pp
Assume that we have the Assume that we have the
@@ -188,7 +180,6 @@ the second example will result in
.Dq ftp/b-host.foo.com .Dq ftp/b-host.foo.com
(because of the default domain). And all of this is of course only (because of the default domain). And all of this is of course only
valid if you have working name resolving. valid if you have working name resolving.
.Sh SEE ALSO .Sh SEE ALSO
.Xr krb5_build_principal 3 , .Xr krb5_build_principal 3 ,
.Xr krb5_free_principal 3 , .Xr krb5_free_principal 3 ,

View File

@@ -10,28 +10,19 @@
.Nm krb5_build_principal_va_ext , .Nm krb5_build_principal_va_ext ,
.Nm krb5_make_principal .Nm krb5_make_principal
.Nd Principal creation functions .Nd Principal creation functions
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_build_principal "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "..." .Fn krb5_build_principal "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_build_principal_ext "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "..." .Fn krb5_build_principal_ext "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_build_principal_va "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "va_list ap" .Fn krb5_build_principal_va "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_build_principal_va_ext "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "va_list ap" .Fn krb5_build_principal_va_ext "krb5_context context" "krb5_principal *principal" "int realm_len" "krb5_const_realm realm" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_make_principal "krb5_context context" "krb5_principal *principal" "krb5_const_realm realm" "..." .Fn krb5_make_principal "krb5_context context" "krb5_principal *principal" "krb5_const_realm realm" "..."
.Sh DESCRIPTION .Sh DESCRIPTION
These functions create a Kerberos 5 principal from a realm and a list These functions create a Kerberos 5 principal from a realm and a list
of components. of components.
All of these functions return an allocated principal in the All of these functions return an allocated principal in the
@@ -65,7 +56,6 @@ is a wrapper around
If the realm is If the realm is
.Dv NULL , .Dv NULL ,
the default realm will be used. the default realm will be used.
.Sh BUGS .Sh BUGS
You can not have a NUL in a component. Until someone can give a good You can not have a NUL in a component. Until someone can give a good
example of where it would be a good idea to have NUL's in a component, example of where it would be a good idea to have NUL's in a component,

View File

@@ -12,19 +12,14 @@
.Nd creates and verifies checksums .Nd creates and verifies checksums
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_create_checksum "krb5_context context" "krb5_crypto crypto" "unsigned usage_or_type" "void *data" "size_t len" "Checksum *result" .Fn krb5_create_checksum "krb5_context context" "krb5_crypto crypto" "unsigned usage_or_type" "void *data" "size_t len" "Checksum *result"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_verify_checksum "krb5_context context" "krb5_crypto crypto" "krb5_key_usage usage" "void *data" "size_t len" "Checksum *cksum" .Fn krb5_verify_checksum "krb5_context context" "krb5_crypto crypto" "krb5_key_usage usage" "void *data" "size_t len" "Checksum *cksum"
.Ft krb5_boolean .Ft krb5_boolean
.Fn krb5_checksum_is_collision_proof "krb5_context context" "krb5_cksumtype type" .Fn krb5_checksum_is_collision_proof "krb5_context context" "krb5_cksumtype type"
.Ft krb5_boolean .Ft krb5_boolean
.Fn krb5_checksum_is_keyed "krb5_context context" "krb5_cksumtype type" .Fn krb5_checksum_is_keyed "krb5_context context" "krb5_cksumtype type"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions are used to create and verify checksums. These functions are used to create and verify checksums.
.Fn krb5_create_checksum .Fn krb5_create_checksum
@@ -60,7 +55,6 @@ value is a function of both the data, and a separate key). Examples of
keyed hash algorithms are HMAC-SHA1-DES3, and RSA-MD5-DES. The keyed hash algorithms are HMAC-SHA1-DES3, and RSA-MD5-DES. The
.Dq plain .Dq plain
hash functions MD5, and SHA1 are not keyed. hash functions MD5, and SHA1 are not keyed.
.\" .Sh EXAMPLE .\" .Sh EXAMPLE
.\" .Sh BUGS .\" .Sh BUGS
.Sh SEE ALSO .Sh SEE ALSO

View File

@@ -9,13 +9,10 @@
.Nd initialize encryption context .Nd initialize encryption context
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_crypto_init "krb5_context context" "krb5_keyblock *key" "krb5_enctype enctype" "krb5_crypto *crypto" .Fn krb5_crypto_init "krb5_context context" "krb5_keyblock *key" "krb5_enctype enctype" "krb5_crypto *crypto"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_crypto_destroy "krb5_context context" "krb5_crypto crypto" .Fn krb5_crypto_destroy "krb5_context context" "krb5_crypto crypto"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions are used to initialize an encryption context that can These functions are used to initialize an encryption context that can
be used to encrypt or checksum data. be used to encrypt or checksum data.
@@ -33,7 +30,6 @@ with the
.Pp .Pp
.Fn krb5_crypto_destroy .Fn krb5_crypto_destroy
frees a previously allocated encrypion context. frees a previously allocated encrypion context.
.\" .Sh EXAMPLE .\" .Sh EXAMPLE
.\" .Sh BUGS .\" .Sh BUGS
.Sh SEE ALSO .Sh SEE ALSO

View File

@@ -11,19 +11,14 @@
.Nd encrypt and decrypt data .Nd encrypt and decrypt data
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_encrypt "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "krb5_data *result" .Fn krb5_encrypt "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "krb5_data *result"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_encrypt_EncryptedData "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "int kvno" "EncryptedData *result" .Fn krb5_encrypt_EncryptedData "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "int kvno" "EncryptedData *result"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_decrypt "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "krb5_data *result" .Fn krb5_decrypt "krb5_context context" "krb5_crypto crypto" "unsigned usage" "void *data" "size_t len" "krb5_data *result"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_decrypt_EncryptedData "krb5_context context" "krb5_crypto crypto" "unsigned usage" "EncryptedData *e" "krb5_data *result" .Fn krb5_decrypt_EncryptedData "krb5_context context" "krb5_crypto crypto" "unsigned usage" "EncryptedData *e" "krb5_data *result"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions are used to encrypt and decrypt data. These functions are used to encrypt and decrypt data.
.Pp .Pp
@@ -52,7 +47,6 @@ is not zero, it will be put in the
and and
.Fn krb5_decrypt_EncryptedData .Fn krb5_decrypt_EncryptedData
works similarly. works similarly.
.\" .Sh EXAMPLE .\" .Sh EXAMPLE
.\" .Sh BUGS .\" .Sh BUGS
.Sh SEE ALSO .Sh SEE ALSO

View File

@@ -6,22 +6,17 @@
.Sh NAME .Sh NAME
.Nm krb5_free_principal .Nm krb5_free_principal
.Nd Principal free function .Nd Principal free function
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft void .Ft void
.Fn krb5_free_principal "krb5_context context" "krb5_principal principal" .Fn krb5_free_principal "krb5_context context" "krb5_principal principal"
.Sh DESCRIPTION .Sh DESCRIPTION
The The
.Fn krb5_free_principal .Fn krb5_free_principal
will free a principal that has been created with will free a principal that has been created with
.Fn krb5_build_principal , .Fn krb5_build_principal ,
.Fn krb5_parse_name , .Fn krb5_parse_name ,
or with some other function. or with some other function.
.Sh SEE ALSO .Sh SEE ALSO
.Xr krb5_425_conv_principal 3 , .Xr krb5_425_conv_principal 3 ,
.Xr krb5_build_principal 3 , .Xr krb5_build_principal 3 ,

View File

@@ -16,40 +16,28 @@
.Nd Heimdal logging functions .Nd Heimdal logging functions
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft "typedef void"
.\" ouch! .Fn "\*(lp*krb5_log_log_func_t\*(rp" "const char *time" "const char *message" "void *data"
.ds xx \\*(fP\fR(\fP\\*(lI*\\*(fP .Ft "typedef void"
.ds xy \fR)\|\fP .Fn "\*(lp*krb5_log_close_func_t\*(rp" "void *data"
.Fn "\\*(lItypedef void \\*(xxkrb5_log_log_func_t\\*(xy" "const char *time" "const char *message" "void *data"
.Fn "\\*(lItypedef void \\*(xxkrb5_log_close_func_t\\*(xy" "void *data"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_addlog_dest "krb5_context context" "krb5_log_facility *facility" "const char *destination" .Fn krb5_addlog_dest "krb5_context context" "krb5_log_facility *facility" "const char *destination"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_addlog_func "krb5_context context" "krb5_log_facility *facility" "int min" "int max" "krb5_log_log_func_t log" "krb5_log_close_func_t close" "void *data" .Fn krb5_addlog_func "krb5_context context" "krb5_log_facility *facility" "int min" "int max" "krb5_log_log_func_t log" "krb5_log_close_func_t close" "void *data"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_closelog "krb5_context context" "krb5_log_facility *facility" .Fn krb5_closelog "krb5_context context" "krb5_log_facility *facility"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_initlog "krb5_context context" "const char *program" "krb5_log_facility **facility" .Fn krb5_initlog "krb5_context context" "const char *program" "krb5_log_facility **facility"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_log "krb5_context context" "krb5_log_facility *facility" "int level" "const char *format" "..." .Fn krb5_log "krb5_context context" "krb5_log_facility *facility" "int level" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_log_msg "krb5_context context" "krb5_log_facility *facility" "char **reply" "int level" "const char *format" "..." .Fn krb5_log_msg "krb5_context context" "krb5_log_facility *facility" "char **reply" "int level" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_openlog "krb5_context context" "const char *program" "krb5_log_facility **facility" .Fn krb5_openlog "krb5_context context" "const char *program" "krb5_log_facility **facility"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_vlog "krb5_context context" "krb5_log_facility *facility" "int level" "const char *format" "va_list arglist" .Fn krb5_vlog "krb5_context context" "krb5_log_facility *facility" "int level" "const char *format" "va_list arglist"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_vlog_msg "krb5_context context" "krb5_log_facility *facility" "char **reply" "int level" "const char *format" "va_list arglist" .Fn krb5_vlog_msg "krb5_context context" "krb5_log_facility *facility" "char **reply" "int level" "const char *format" "va_list arglist"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions logs messages to one or more destinations. These functions logs messages to one or more destinations.
.Pp .Pp
@@ -97,7 +85,6 @@ is a standard
.Fn printf .Fn printf
style format string (but see the BUGS section). style format string (but see the BUGS section).
.Pp .Pp
If you want better control of where things gets logged, you can instead of using If you want better control of where things gets logged, you can instead of using
.Fn krb5_openlog .Fn krb5_openlog
call call
@@ -135,9 +122,7 @@ calls
and then calls and then calls
.Fn krb5_addlog_dest .Fn krb5_addlog_dest
for each destination found. for each destination found.
.Ss Destinations .Ss Destinations
The defined destinations (as specified in The defined destinations (as specified in
.Pa krb5.conf ) .Pa krb5.conf )
follows: follows:

View File

@@ -6,15 +6,11 @@
.Sh NAME .Sh NAME
.Nm krb5_parse_name .Nm krb5_parse_name
.Nd String to principal conversion .Nd String to principal conversion
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_parse_name "krb5_context context" "const char *name" "krb5_principal *principal" .Fn krb5_parse_name "krb5_context context" "const char *name" "krb5_principal *principal"
.Sh DESCRIPTION .Sh DESCRIPTION
.Fn krb5_parse_name .Fn krb5_parse_name
converts a string representation of a princpal name to converts a string representation of a princpal name to
.Nm krb5_principal . .Nm krb5_principal .

View File

@@ -7,18 +7,13 @@
.Nm krb5_sname_to_principal , .Nm krb5_sname_to_principal ,
.Nm krb5_sock_to_principal .Nm krb5_sock_to_principal
.Nd Create a service principal .Nd Create a service principal
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_sname_to_principal "krb5_context context" "const char *hostname" "const char *sname" "int32_t type" "krb5_principal *principal" .Fn krb5_sname_to_principal "krb5_context context" "const char *hostname" "const char *sname" "int32_t type" "krb5_principal *principal"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_sock_to_principal "krb5_context context" "int socket" "const char *sname" "int32_t type" "krb5_principal *principal" .Fn krb5_sock_to_principal "krb5_context context" "int socket" "const char *sname" "int32_t type" "krb5_principal *principal"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions create a These functions create a
.Dq service .Dq service
principal that can, for instance, be used to lookup a key in a keytab. For both these function the principal that can, for instance, be used to lookup a key in a keytab. For both these function the
@@ -49,7 +44,6 @@ of the passed
which should be a bound which should be a bound
.Dv AF_INET .Dv AF_INET
socket. socket.
.Sh SEE ALSO .Sh SEE ALSO
.Xr krb5_425_conv_principal 3 , .Xr krb5_425_conv_principal 3 ,
.Xr krb5_build_principal 3 , .Xr krb5_build_principal 3 ,

View File

@@ -7,25 +7,19 @@
.Nm krb5_unparse_name .Nm krb5_unparse_name
.\" .Nm krb5_unparse_name_ext .\" .Nm krb5_unparse_name_ext
.Nd Principal to string conversion .Nd Principal to string conversion
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_unparse_name "krb5_context context" "krb5_principal principal" "char **name" .Fn krb5_unparse_name "krb5_context context" "krb5_principal principal" "char **name"
.\" .Ft krb5_error_code .\" .Ft krb5_error_code
.\" .Fn krb5_unparse_name_ext "krb5_context context" "krb5_const_principal principal" "char **name" "size_t *size" .\" .Fn krb5_unparse_name_ext "krb5_context context" "krb5_const_principal principal" "char **name" "size_t *size"
.Sh DESCRIPTION .Sh DESCRIPTION
This function takes a This function takes a
.Fa principal , .Fa principal ,
and will convert in to a printable representation with the same syntax as decribed in and will convert in to a printable representation with the same syntax as decribed in
.Xr krb5_parse_name 3 . .Xr krb5_parse_name 3 .
.Fa *name .Fa *name
will point to allocated data and should be freed by the caller. will point to allocated data and should be freed by the caller.
.Sh SEE ALSO .Sh SEE ALSO
.Xr krb5_425_conv_principal 3 , .Xr krb5_425_conv_principal 3 ,
.Xr krb5_build_principal 3 , .Xr krb5_build_principal 3 ,

View File

@@ -16,36 +16,25 @@
.Nd Heimdal warning and error functions .Nd Heimdal warning and error functions
.Sh SYNOPSIS .Sh SYNOPSIS
.Fd #include <krb5.h> .Fd #include <krb5.h>
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_err "krb5_context context" "int eval" "krb5_error_code code" "const char *format" "..." .Fn krb5_err "krb5_context context" "int eval" "krb5_error_code code" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_errx "krb5_context context" "int eval" "const char *format" "..." .Fn krb5_errx "krb5_context context" "int eval" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_verr "krb5_context context" "int eval" "krb5_error_code code" "const char *format" "va_list ap" .Fn krb5_verr "krb5_context context" "int eval" "krb5_error_code code" "const char *format" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_verrx "krb5_context context" "int eval" "const char *format" "va_list ap" .Fn krb5_verrx "krb5_context context" "int eval" "const char *format" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_vwarn "krb5_context context" "krb5_error_code code" "const char *format" "va_list ap" .Fn krb5_vwarn "krb5_context context" "krb5_error_code code" "const char *format" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_vwarnx "krb5_context context" "const char *format" "va_list ap" .Fn krb5_vwarnx "krb5_context context" "const char *format" "va_list ap"
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_warn "krb5_context context" "krb5_error_code code" "const char *format" "..." .Fn krb5_warn "krb5_context context" "krb5_error_code code" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_warnx "krb5_context context" "const char *format" "..." .Fn krb5_warnx "krb5_context context" "const char *format" "..."
.Ft krb5_error_code .Ft krb5_error_code
.Fn krb5_set_warn_dest "krb5_context context" "krb5_log_facility *facility" .Fn krb5_set_warn_dest "krb5_context context" "krb5_log_facility *facility"
.Sh DESCRIPTION .Sh DESCRIPTION
These functions prints a warning message to some destination. These functions prints a warning message to some destination.
.Fa format .Fa format
is a printf style format specifying the message to print. The forms not ending in an is a printf style format specifying the message to print. The forms not ending in an
@@ -68,6 +57,5 @@ Messages logged with the
functions have a log level of 1, while the functions have a log level of 1, while the
.Dq err .Dq err
functions logs with level 0. functions logs with level 0.
.Sh SEE ALSO .Sh SEE ALSO
.Xr krb5_openlog 3 .Xr krb5_openlog 3