I understand the difference between Get and Get Attributes on a Template
just as Tim writes. In my server, a Get on a Template object returns
those attributes applied by the template. I also include any attributes
implicitly created for the object.
I'll give an example here and please let me know if this is incorrect:
First I create the template with just a few attributes, and a few
implicitly added attributes are sent back by the server in the Template
Attribute in the Response Message:
<BatchItem type="Structure"> <Operation type="Enumeration" value="Create" /> <RequestPayload type="Structure"> <ObjectType type="Enumeration" value="0x00000006" /> <TemplateAttribute type="Structure"> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Algorithm" /> <AttributeValue type="Enumeration" value="0x00000003" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Length" /> <AttributeValue type="Integer" value="256" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Name" /> <AttributeValue type="Structure"> <NameValue type="TextString" value="Template-1" /> <NameType type="Enumeration" value="0x00000001" /> </AttributeValue> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Contact Information" /> <AttributeValue type="TextString" value="Jim Flood" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="x-Security Group" /> <AttributeValue type="TextString" value="Portland" /> </Attribute> </TemplateAttribute> </RequestPayload> </BatchItem> <BatchItem type="Structure"> <Operation type="Enumeration" value="Create" /> <ResultStatus type="Enumeration" value="Success" /> <ResponsePayload type="Structure"> <UniqueIdentifier type="TextString" value="YHvy/gbcZUtpx1pQSXjMlw==" /> <TemplateAttribute type="Structure"> <Attribute type="Structure"> <AttributeName type="TextString" value="Operation Policy Name" /> <AttributeValue type="TextString" value="default" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Usage Mask" /> <AttributeValue type="Integer" value="12" /> </Attribute> </TemplateAttribute> </ResponsePayload> </BatchItem>
Note that Operation Policy Name and Cryptographic Usage Mask are now
also part of this template, i.e. they will be applied to any object
created with this template.
If I issue a Get Attributes on this object, I see the full list of
attributes:
<BatchItem type="Structure"> <Operation type="Enumeration" value="GetAttributes" /> <RequestPayload type="Structure" /> </BatchItem> <BatchItem type="Structure"> <Operation type="Enumeration" value="GetAttributes" /> <ResultStatus type="Enumeration" value="Success" /> <ResponsePayload type="Structure"> <UniqueIdentifier type="TextString" value="YHvy/gbcZUtpx1pQSXjMlw==" /> <Attribute type="Structure"> <AttributeName type="TextString" value="Contact Information" /> <AttributeValue type="TextString" value="Jim Flood" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Algorithm" /> <AttributeValue type="Enumeration" value="0x00000003" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Length" /> <AttributeValue type="Integer" value="256" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Usage Mask" /> <AttributeValue type="Integer" value="12" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Initial Date" /> <AttributeValue type="DateTime" value="2012-05-08 18:06:15Z" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Last Change Date" /> <AttributeValue type="DateTime" value="2012-05-08 18:06:15Z" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Name" /> <AttributeIndex type="Integer" value="0" /> <AttributeValue type="Structure"> <NameValue type="TextString" value="Template-1" /> <NameType type="Enumeration" value="0x00000001" /> </AttributeValue> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Object Type" /> <AttributeValue type="Enumeration" value="0x00000006" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Operation Policy Name" /> <AttributeValue type="TextString" value="default" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="State" /> <AttributeValue type="Enumeration" value="0x00000002" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Unique Identifier" /> <AttributeValue type="TextString" value="YHvy/gbcZUtpx1pQSXjMlw==" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="x-Security Group" /> <AttributeIndex type="Integer" value="0" /> <AttributeValue type="TextString" value="Portland" /> </Attribute> </ResponsePayload> </BatchItem>
But if I issue a Get on the object, I only see those attributes that
would be applied to an object created with this Template:
<BatchItem type="Structure"> <Operation type="Enumeration" value="Get" /> <RequestPayload type="Structure" /> </BatchItem> <BatchItem type="Structure"> <Operation type="Enumeration" value="Get" /> <ResultStatus type="Enumeration" value="Success" /> <ResponsePayload type="Structure"> <UniqueIdentifier type="TextString" value="YHvy/gbcZUtpx1pQSXjMlw==" /> <Template type="Structure"> <Attribute type="Structure"> <AttributeName type="TextString" value="Contact Information" /> <AttributeValue type="TextString" value="Jim Flood" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Algorithm" /> <AttributeValue type="Enumeration" value="0x00000003" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Length" /> <AttributeValue type="Integer" value="256" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Cryptographic Usage Mask" /> <AttributeValue type="Integer" value="12" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="Operation Policy Name" /> <AttributeValue type="TextString" value="default" /> </Attribute> <Attribute type="Structure"> <AttributeName type="TextString" value="x-Security Group" /> <AttributeIndex type="Integer" value="0" /> <AttributeValue type="TextString" value="Portland" /> </Attribute> </Template> </ResponsePayload> </BatchItem>
I am interested in any feedback on this example, since I have not yet
performed any interoperability testing.
Jim Flood
On 5/3/2012 6:59 AM, Tim Hudson wrote:
What is the "value" of a Template - i.e. what is returned for a GET on a template. For the following example - register of a template: OBJECT_TYPE:enum:0x00000006:TEMPLATE TEMPLATE_ATTRIBUTE:stru:4 END_STRUCTURE:stru:4 TEMPLATE:stru:4
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Algorithm
ATTRIBUTE_VALUE:enum:0x00000003
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Length
ATTRIBUTE_VALUE:int4:0x00000100
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Usage Mask
ATTRIBUTE_VALUE:int4:0x0000000c
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Name
ATTRIBUTE_VALUE:stru:6
NAME_VALUE:text:Template1
NAME_TYPE:enum:0x00000001:UNINTERPRETED_TEXT_STRING
END_STRUCTURE:stru:6
END_STRUCTURE:stru:5 END_STRUCTURE:stru:4 This is what I think is "correct" - call this VENDOR-A:
TEMPLATE:stru:4
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Algorithm
ATTRIBUTE_VALUE:enum:0x00000003:AES
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Length
ATTRIBUTE_VALUE:int4:0x00000100
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Usage Mask
ATTRIBUTE_VALUE:int4:0x0000000c:DECRYPT ENCRYPT
END_STRUCTURE:stru:5
END_STRUCTURE:stru:4 Here is an example of something I consider not correct - call this VENDOR-B:
TEMPLATE:stru:4
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Algorithm
ATTRIBUTE_VALUE:enum:0x00000003:AES
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Length
ATTRIBUTE_VALUE:int4:0x00000100
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Usage Mask
ATTRIBUTE_VALUE:int4:0x0000000c:DECRYPT ENCRYPT
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Object Type
ATTRIBUTE_VALUE:enum:0x00000006:TEMPLATE
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Name
ATTRIBUTE_VALUE:stru:6
NAME_VALUE:text:Template1
NAME_TYPE:enum:0x00000001:UNINTERPRETED_TEXT_STRING
END_STRUCTURE:stru:6
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Unique Identifier
ATTRIBUTE_VALUE:text:e176df8d-16de-4bed-8031-0ef7932f8740
END_STRUCTURE:stru:5
END_STRUCTURE:stru:4 Here is an example of something I consider not correct - call this VENDOR-C:
TEMPLATE:stru:4
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Object Type
ATTRIBUTE_VALUE:enum:0x00000006:TEMPLATE
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Algorithm
ATTRIBUTE_VALUE:enum:0x00000003:AES
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Cryptographic Length
ATTRIBUTE_VALUE:int4:0x00000100
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Name
ATTRIBUTE_INDEX:int4:0x00000000
ATTRIBUTE_VALUE:stru:6
NAME_VALUE:text:Template1
NAME_TYPE:enum:0x00000001:UNINTERPRETED_TEXT_STRING
END_STRUCTURE:stru:6
END_STRUCTURE:stru:5
ATTRIBUTE:stru:5
ATTRIBUTE_NAME:text:Initial Date
ATTRIBUTE_VALUE:date:0x000000004f967840:Tue Apr 24 19:54:08 2012
END_STRUCTURE:stru:5
END_STRUCTURE:stru:4 There are other variations on the theme - but the general concept should be clear. We can argue whether or not the Name belongs in the template - and my argument for that is rather simple - it isn't there for other objects - they are all attributes - and there is no way a template should be treated differently. The concept of the "value" of the template containing attributes other than those which form part of what the template contributes to objects created with reference to the template is (in my view at least) simply unsupportable.
Views? Tim.
---------------------------------------------------------------------
To unsubscribe, e-mail:
For additional commands, e-mail: