B.3. 代表二进制数据

二进制数据(如 JPEG 镜像)使用两种方法之一(标准 LDIF 表示法或 base-64 编码)在 LDIF 中表示。

B.3.1. 标准 LDIF 表示法

标准 LDIF 表示法使用比(<)符号少的、表示数据是二进制的。例如:
jpegphoto: < file:/path/to/photo
使用这个标准表示法,不需要指定 ldapmodify -b 参数。但是,标准表示法要求将以下行添加到 LDIF 文件的开头或 LDIF 更新语句:
version: 1
例如:
# ldapmodify -x -D userDN -W

version: 1
dn: cn=Barney Fife,ou=People,dc=example,dc=com
changetype: modify
add: usercertificate
usercertificate;binary: < file: BarneysCert

B.3.2. base-64 Encoding

二进制数据可以转换为 base-64,可在 LDIF 文件中用于各种数据,从镜像转换为 TLS 证书。基本 64 编码的数据通过使用 :: 符号来识别。例如:
jpegPhoto::encoded_data 
除了二进制数据外,其他必须采用 base-64 编码的值包括:
  • 以冒号(:)或空格开头的任何值。
  • 包含非 ASCII 数据的任何值,包括新行。
使用带有 -b 参数的 ldif 命令行工具将二进制数据转换为 LDIF 格式:
# ldif -b attribute_name 
attribute_name 是提供二进制数据的属性的名称。二进制数据从标准输入读取,结果会写入标准输出。因此,使用重定向运算符选择输入和输出文件。
ldif 命令行工具将采用任何输入,并使用正确的行延和适当的属性信息对其进行格式化。ldif 工具还会评估输入是否需要 base-64 编码。例如:
# ldif -b jpegPhoto <  mark.jpg > out.ldif
本例使用含有 JPEG 格式的镜像的二进制文件,并将其转换为 jpegPhoto 属性的 LDIF 格式。输出被保存到 out.ldif
-b 选项指定 ldif 工具应将整个输入解释为单个二进制值。如果没有 -b,每行都将被视为单独的输入值。