evan.hong f28a3fe927 init | преди 4 години | |
---|---|---|
examples | преди 4 години | |
mstypes | преди 4 години | |
ndr | преди 4 години | |
.gitignore | преди 4 години | |
.travis.yml | преди 4 години | |
LICENSE | преди 4 години | |
README.md | преди 4 години |
This project relates to CDE 1.1: Remote Procedure Call
It is a partial implementation that mainly focuses on unmarshaling NDR encoded byte streams into Go structures.
Reference test vectors needed: It has been difficult to implement due to a lack of reference test byte streams in the standards documentation. Test driven development has been extremely challenging without these. If you are aware of and reference test vector sources for NDR encoding please let me know by raising an issue with the details. Thanks!
Interface Definition Language (IDL)
An array is conformant if the IDL definition includes one of the following attributes:
An array is varying if the IDL definition includes one of the following attributes:
SubAuthority[] is conformant in the example below:
typedef struct _RPC_SID {
unsigned char Revision;
unsigned char SubAuthorityCount;
RPC_SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
[size_is(SubAuthorityCount)] unsigned long SubAuthority[];
} RPC_SID,
*PRPC_SID,
*PSID;
Buffer is a pointer to a conformant varying array in the example below:
typedef struct _RPC_UNICODE_STRING {
unsigned short Length;
unsigned short MaximumLength;
[size_is(MaximumLength/2), length_is(Length/2)]
WCHAR* Buffer;
} RPC_UNICODE_STRING,
*PRPC_UNICODE_STRING;