python-ldap as replication client

Eric Brunson brunson at
Wed Mar 23 17:38:33 CET 2011

On 03/23/2011 01:11 AM, Michael Ströder wrote:
> Eric Brunson wrote:
>> The new code works great, thanks so much for the new features.
>> I do have one issue, and maybe I'm just not looking in the correct
>> place.  The Sync Info Message returns a syncInfoValue which is a BER
>> encoded ASN.1 CHOICE structure:
>>      syncInfoValue ::= CHOICE {
>>                newcookie      [0] syncCookie,
>>                refreshDelete  [1] SEQUENCE {
>>                    cookie         syncCookie OPTIONAL,
>>                    refreshDone    BOOLEAN DEFAULT TRUE
>>                },
>>                refreshPresent [2] SEQUENCE {
>>                    cookie         syncCookie OPTIONAL,
>>                    refreshDone    BOOLEAN DEFAULT TRUE
>>                },
>>                syncIdSet      [3] SEQUENCE {
>>                    cookie         syncCookie OPTIONAL,
>>                    refreshDeletes BOOLEAN DEFAULT FALSE,
>>                    syncUUIDs      SET OF syncUUID
>>                }
>>            }
>> The data is returned and I've been able to successfully decode it with
>> the PyASN1 BER codec, but I can't find any indication of the choice
>> index being returned in the value.   I don't know that the refreshDelete
>> and the refreshPresent are distinguishable from each other without
>> additional information, but I see that the value being returned from
>> result4() is simply what ldap_parse_intermediate() returns, without any
>> indication of the choice index.  Looking at the raw BER encoded packet
>> in wireshark, it would seem that the two bytes before the data being
>> returned have the index embedded in the second byte.
>> I'm sure this must simply be something I'm overlooking.  Any help?
> Could you share a short script demonstrating this?

I've done some more reading and I think I'm mistaken about there being 
some sort of index indicating the type of choice that was encoded.  The 
documentation for the PyASN library implies that the decoder has to 
infer the choice based on the structure of the data, which seems odd.

Thanks for the reply, I'll get back to you when I figure something out.


More information about the python-ldap mailing list