LDIF + BASE64 nem értem [megoldva]

Fórumok

Egy címtárból kérdezek le valamit ldapsearch-csel. Mivel az attributum értéke ékezetes karaktereket is tartalmaz, ezért a választ b64-ben kapom vissza. Mivel az érték kellően hosszú, ezért a választ több sorban tördelve kapom meg. LDIF-ben a sor eleji szóköz jelenti a folytatósort - de természetesen nem része az adatnak (ugyanúgy, ahogy gondolom a sor végi ENTER sem). A visszakapott értéket akarom dekódolni. Konvencionálisan erre az "openssl base64 -d" nálam az eszköz. Most viszont nem ok.

$ ldapsearch -LLL -x -h A.B.C.D -p 389 -D CN=user,OU=Users,OU=YYY,O=XX -w PASSWORD 'company=*Közigazgatási*' company
...
dn: XXXX
company:: S8O2emlnYXpnYXTDoXNpIMOpcyBFbGVrdHJvbmlrdXMgS8O2enN6b2xnw6FsdGF0w6Fz
 b2sgS8O2enBvbnRpIEhpdmF0YWxh
$ openssl base64 -d <<< 'S8O2emlnYXpnYXTDoXNpIMOpcyBFbGVrdHJvbmlrdXMgS8O2enN6b2xnw6FsdGF0w6Fz' ; echo
Közigazgatási és Elektronikus Közszolgáltatás
$ openssl base64 -d <<< 'b2sgS8O2enBvbnRpIEhpdmF0YWxh' ; echo
ok Központi Hivatala
$ openssl base64 -d <<< 'S8O2emlnYXpnYXTDoXNpIMOpcyBFbGVrdHJvbmlrdXMgS8O2enN6b2xnw6FsdGF0w6Fzb2sgS8O2enBvbnRpIEhpdmF0YWxh' ; echo

$

Ha fenti példákban direktben a coreutils-os base64 -et használom, akkor jó mind a 3. No most. Ha a legutolsó - azaz az egész B64-es sztringet tartalmazó - parancsot kicsit módosítom, azaz az első sorban levő dekódolandó adat és a második sorbeli adat közé beteszek egy fizikai ENTER-t (azaz nyomok egy Ctrl-V -t, és utána egy ENTER-t), akkor az openssl jól dekódolja, ellenben a coreutils-os hibát ad (szerintem amúgy az a jó)

$ openssl base64 -d <<< 'S8O2emlnYXpnYXTDoXNpIMOpcyBFbGVrdHJvbmlrdXMgS8O2enN6b2xnw6FsdGF0w6Fz^Mb2sgS8O2enBvbnRpIEhpdmF0YWxh' ; echo
Közigazgatási és Elektronikus Közszolgáltatások Központi Hivatala
$ base64 -d <<< 'S8O2emlnYXpnYXTDoXNpIMOpcyBFbGVrdHJvbmlrdXMgS8O2enN6b2xnw6FsdGF0w6Fz^Mb2sgS8O2enBvbnRpIEhpdmF0YWxh' ; echo
Közigazgatási és Elektronikus Közszolgáltatásbase64: érvénytelen bemenet

$ openssl version
OpenSSL 0.9.8j-fips 07 Jan 2009
$ base64 --version
base64 (GNU coreutils) 8.12
...

Az openssl ugyanígy működik "OpenSSL 1.0.1f 6 Jan 2014" verzió esetén is, és a base64 is 8.21-essel. Ez nekem viszont nagyon nem OK. Mi az isten haragja van itt?

Jav: kell egy -A opció az openssl-nek, és akkor jól kezeli a (nem túl) hosszú sztringeket.

Hozzászólások

Én ki szoktam szedni a sortöréseket az ldapsearch kimenetéből ezzel:

ldapsearch ... | perl -00 -pe 's/\n (\S)/$1/g'