Kmip 1.0 Spec Ed 0.98
Kmip 1.0 Spec Ed 0.98
Kmip 1.0 Spec Ed 0.98
1.1283Document Roadmap
284TBD
1.3287Notational Conventions
288TBD
1.4289Namespaces
290TBD
1.5291Terminology
292TBD
1.7297Non-normative References
298TBD
1.8299Compliance
300TBD
301The key words "SHALL", "SHALL NOT", "REQUIRED", "SHOULD", "SHOULD NOT",
302"RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC
3032119. The words ‘must’, ‘can’, and ‘will’ are forbidden. [The Conformance Language proposal is missing]
1.9320Base Objects
321These objects are used within the messages of the protocol, but are not objects managed by the key
322management system. They may arebe components of Managed Objects.
3231.9.1 Attribute
324An Attribute object is a structure (see Table 1) used for sending and receiving Managed Object attributes.
325The Attribute Name is a text-string that is used to identify the attribute. The Attribute Index is an index
326number assigned by the key management server when a specified named attribute is allowed to have
327multiple instances. The Attribute Index is used to identify the particular instance. Attribute Indices
328shallSHALL start with 0. The Attribute Index of an attribute shall notSHALL NOT change when other
329instances are added or deleted. For example, if a particular attribute has 4 instances with Attribute Indices
3300, 1, 2 and 3, and the instance with Attribute Index 2 is deleted, then the Attribute Index of instance 3 is
331not changed. Attributes that have a single instance have an Attribute Index of 0, which is assumed if the
332Attribute Index is not specified. The Attribute Value is either a primitive data type or structured object,
333depending on the attribute.
424 Table 9: Key Material Object Structure for Transparent Symmetric Keys
428 Table 10: Key Material Object Structure for Transparent DSA Private Keys
429P is the prime modulus. Q is the prime divisor of P-1. G is the generator. X is the private key (refer to
430NIST FIPS PUB 186-3).
434 Table 11: Key Material Object Structure for Transparent DSA Public Keys
435P is the prime modulus. Q is the prime divisor of P-1. G is the generator. Y is the public key (refer to NIST
436FIPS PUB 186-3).
440 Table 12: Key Material Object Structure for Transparent RSA Private Keys
441One of the following shallSHALL be present (refer to RSA PKCS#1):
442 Private Exponent
443 P and Q (the first two prime factors of Modulus)
444 Prime Exponent P and Prime Exponent Q.
448 Table 13: Key Material Object Structure for Transparent RSA Public Keys
452 Table 14: Key Material Object Structure for Transparent DH Private Keys
453P is the prime, P = JQ + 1. G is the generator G Q = 1 mod P. Q is the prime factor of P-1. J is the cofactor.
454X is the private key (refer to ANSI X9.42).
458 Table 15: Key Material Object Structure for Transparent DH Public Keys
459P is the prime, P = JQ + 1. G is the generator G Q = 1 mod P. Q is the prime factor of P-1. J is the
460cofactor. Y is the public key (refer to ANSI X9.42).
464 Table 16: Key Material Object Structure for Transparent ECDSA Private Keys
465D is the private key (refer to NIST FIPS PUB 186-3).
469 Table 17: Key Material Object Structure for Transparent ECDSA Public Keys
470Q String is the public key (refer to NIST FIPS PUB 186-3).
474 Table 18: Key Material Object Structure for Transparent ECDH Private Keys
478 Table 19: Key Material Object Structure for Transparent ECDH Public Keys
1.10
486Managed Objects
487Managed Objects are objects that are the subjects of key management operations, which are described in
488Sections 3and 4. Managed Cryptographic Objects are the subset of Managed Objects that contain
489cryptographic material (e.g. certificates, keys, and secret data).
4901.10.1 Certificate
491A Managed Cryptographic Object that is a digital certificate (e.g., an encoded X.509 certificate).
5451.10.6 Template
546A Template is a named Managed Object containing the client-settable attributes of a Managed
547Cryptographic Object (i.e., a stored, named list of attributes). A Template is used to specify the attributes
548of a new Managed Cryptographic Object in various operations. It is intended to be used to specify the
549cryptographic attributes of new objects in a standardized or convenient way. None of the client-settable
550attributes specified in a Template except the Name attribute apply to the template object itself, but instead
551apply to any object created using the Template.
552The Template mayMAY be the subject of the Register, Locate, Get, Get Attributes, Get Attribute List, Add
553Attribute, Modify Attribute, Delete Attribute, and Destroy operations.
554An attribute specified in a Template is applicable either to the Template itself or to objects created using
555the Template.
556Attributes applicable to the Template itself are: Unique Identifier, Object Type, Name, Initial Date, Archive
557Date, and Last Changed Date.
558Attributes applicable to objects created using the Template are:
559 Cryptographic Algorithm
560 Cryptographic Length
561 Cryptographic Parameters
562 Operation Policy Name
563 Cryptographic Usage Mask
564 Usage Limits
565 Activation Date
566 Process Start Date
567 Protect Stop Date
568 Deactivation Date
2.1600Unique Identifier
601The Unique Identifier is generated by the key management system to uniquely identify a Managed Object.
602It is only required to be unique within the identifier space managed by a single key management system,
603however it is recommended that this identifier be globally unique, to allow for key management domain
604export of such objects. This attribute shallSHALL be assigned by the key management system at creation
605or registration time, and then shall notSHALL NOT be changed or deleted by any entity at any time.
2.2608Name
609The Name attribute is a structure (see Table 31) used to identify and locate the object, assigned by the
610client, and that is able to be intepreted by humans are able to interpret. The key management system
67kmip-1.0-spec-ed-0.98 3 September 2009
68Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 23 of 135
611mayMAY specify rules by which the client is able to creates valid names. Clients are informed of such
612rules by a mechanism that is not specified by this standard. Names shallSHALL be unique within a given
613key management domain, but are not required to be globally unique.
2.3616Object Type
617The type of a Managed Object (e.g., public key, private key, symmetric key, etc). This attribute
618shallSHALL be set by the server when the object is created or registered and then shall notSHALL NOT
619be changed.
2.5628Cryptographic Length
629Cryptographic Length is the length in bits of the clear-text cryptographic key material of the Managed
630Cryptographic Object. This attribute shallSHALL be set by the server when the object is created or
631registered, and then shall notSHALL NOT be changed.
2.7650Certificate Type
651The type of a certificate (e.g., X.509, PGP, etc). This value shallSHALL be set by the server when the
652certificate is created or registered and then shall notSHALL NOT be changed.
2.8655Certificate Issuer
656The Certificate Issuer attribute is a structure (see Table 44) used to provide identification of a certificate,
657containing the Issuer Distinguished Name (i.e., from the Issuer field of the certificate) and the Certificate
658Serial Number (i.e., from the Serial Number field of the certificate). This value shallSHALL be set by the
659server when the certificate is created or registered and then shall notSHALL NOT be changed.
2.9662Certificate Subject
663The Certificate Subject attribute is a structure (see Table 46) used to identify the subject of a certificate,
664containing the Subject Distinguished Name (i.e., from the Subject field of the certificate). It mayMAY
665include one or more alternative names (e.g., email address, IP address, DNS name) for the subject of the
666certificate (i.e., from the Subject Alternative Name extension within the certificate). These values
667shallSHALL be set by the server when the certificate is created or registered and shall notSHALL NOT be
668changed until the certificate is renewed.
669If the Subject Alternative Name extension is included in the certificate and is marked CRITICAL, then it is
670possible to issue an X.509 certificate where the subject field is left blank. Therefore an empty string is an
671acceptable value for the Certificate Subject Distinguished Name.
2.11
683Operation Policy Name
684An operation policy controls what entities mayMAY perform which key management operations on the
685object. The content of the Operation Policy Name attribute is the name of a policy object known to the key
686management system and therefore server dependent. The named policy objects are created and
687managed using mechanisms outside the scope of the protocol. The policies determine what entities
688mayMAY perform specified operations on the object, and which of the object’s attributes mayMAY be
689modified or deleted. The Operation Policy Name attribute shouldSHOULD be set when operations that
690result in a new Managed Object on the server are executed. It is set either explicitly or via some default
691set by the server, which then applies to all subsequent operations on the object.
7162.11.2.2 Default Operation Policy for Certificates and Public Key Objects
717This policy applies to Certificates and Public Keys.
718 Table 53: Default Operation Policy for Certificates and Public Key Objects
725 Table 54: Default Operation Policy for Private Template Objects
729 Table 55: Default Operation Policy for Public Template Objects
2.12
730Cryptographic Usage Mask
731The Cryptographic Usage Mask defines the cryptographic usage of a key. This is a bit mask that indicates
732to the client which cryptographic functions mayMAY be performed using the key.
733 Sign
734 Verify
735 Encrypt
736 Decrypt
737 Wrap Key
738 Unwrap Key
739 Export
740 MAC Generate
741 MAC Verify
742 Derive Key
743 Content Commitment
744 Key Agreement
745 Certificate Sign
746 CRL Sign
747 Generate Cryptogram
748 Validate Cryptogram
749 Translate Encrypt
750 Translate Decrypt
751 Translate Wrap
752 Translate Unwrap
753This list takes into consideration values that mayMAY appear in the Key Usage extension in an X.509
754certificate. However, the list does not consider the additional usages that mayMAY appear in the
755Extended Key Usage extension.
756X.509 Key Usage values shallSHALL be mapped to Cryptographic Usage Mask values in the following
757manner:
encipherOnly Encrypt
decipherOnly Decrypt
758 Table 56: X.509 Key Usage to Cryptographic Usage Mask Mapping
759The Content Commitment (Non-Repudiation) Cryptographic Usage Mask value shallSHALL be set for
760public keys used to verify digital signatures for non-repudiation purposes (i.e., to protect against a signing
761entity denying an action). Public keys used to verify digital signatures for other purposes (e.g.,
762authentication and integrity) shallSHALL be set with the Sign, Verify, or both Cryptographic Usage Mask
763values.
2.14
775Usage Limits
776This is a mechanism for limiting the usage of a Managed Cryptographic Object. It only applies to
777Managed Cryptographic Objects that are able to be used for protection purposes (e.g., symmetric keys,
778private keys, public keys, etc.), and it shallSHALL only reflect their usage for protection (e.g., encryption,
779signing, etc.). This attribute may does not necessarily exist for all Managed Cryptographic Objects, since
780some objects are able to be used without limit, depending on client/server policies. Usage for process
781purposes (e.g., decryption, verification, etc.) is not limited. The attribute has four fields for two different
782types of limits. Exactly one of these two types (i.e., either bytes or objects) shallSHALL be present. These
783limits are:
784 Usage Limits Total Bytes – the total number of bytes allowed to be protected. This is the total
785 value for the entire life of the object, and shall notSHALL NOT be changed once the object begins
786 to be used for protection purposes.
787 Usage Limits Byte Count – the currently remaining number of bytes allowed to be protected.
788 Usage Limits Total Objects – the total number of objects allowed to be protected. This is the total
789 value for the entire life of the object, and shall notSHALL NOT be changed once the object begins
790 to be used for protection purposes.
791 Usage Limits Object Count – the currently remaining number of objects allowed to be protected.
792When the attribute is initially set (usually during object creation or registration), the values set are the
793Total values allowed for the useful life of the object. The count values shallSHALL be ignored by the
794server if the attribute is specified in an operation that creates a new object. Changes made via the Modify
795Attribute operation reflect corrections to these Total values, but they shall notSHALL NOT be changed
2.15800State
801This attribute is an indication of the state of an object as
1
802known to the key management server. The state shall
803notSHALL NOT be changed by using the Modify Attribute
804operation on this attribute. The state shallSHALL only be Pre-Active
805changed by the server as a part of other operations or other 2 3
806server processes. An object shallSHALL be in one of the
807following states at any given time. (Note: These states 4
808correspond to those described in NIST Special Publication
809800-57). 5
Active
810 Pre-Active: The object exists but is not yet usable for
811 any cryptographic purpose. 6
7 8
Deactivated Compromised
109kmip-1.0-spec-ed-0.98 3 September 2009
110Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 37 of 135
9
10
Destroyed
Figure 1: Cryptographic
Destroyed Object States
Compromised
and Transitions
812 Active: The object mayMAY be used for all cryptographic purposes that are allowed by its
813 Cryptographic Usage Mask attribute.
814 Deactivated: The object shall notSHALL NOT be used for protection purpose (e.g., encryption or
815 signing), but, if permitted by the Cryptographic Usage Mask attribute, then mayMAY be used for
816 process purposes (e.g., decryption or verification), but only under extraordinary circumstances
817 and when special permission is granted.
818 Compromised: It is possible that the object has been compromised, and shouldSHOULD only be
819 used for process purposes in a client that is trusted to handle compromised cryptographic
820 objects.
821 Destroyed: The object is no longer usable for any purpose.
822 Destroyed Compromised: The object is no longer usable for any purpose; however its
823 compromised status mayMAY be retained for audit or security purposes.
824State transitions occur as follows:
825 1. The transition from a non-existent key to the Pre-Active state is caused by the creation of the
826 object. When an object is created or registered, it automatically goes from non-existent to Pre-
827 Active. If, however, the operation that creates or registers the object contains an Activation Date
828 that has already occurred, then the state immediately transitions to Active. In this case, the server
829 shallSHALL set the Activation Date attribute to the time when the operation is received, or fail the
830 request attempting to create or register the object, depending on server policy. If the operation
831 contains an Activation Date attribute in the future, or contains no Activation Date, then the
832 Cryptographic Object is initialized in the key management system in the Pre-Active state.
833 2. The transition from Pre-Active to Compromised is caused by a client issuing a Revoke operation
834 with a Revocation Reason of Compromised.
835 3. The transition from Pre-Active to Active is able toSHALL occur in one of three ways:
836 The object has an Activation Date in the future. At the time that the Activation Date is
837 reached, the server changes the state to Active.
838 A client issues a Modify Attribute operation, modifying the Activation Date to a date in the
839 past, or the current date. In this case, the server shallSHALL either set the Activation Date
840 attribute to the date in the past or fail the operation, depending on server policy.
841 A client issues an Activate operation on the object. The server shallSHALL set the
842 Activation Date to the time the Activate operation is received.
843 4. The transition from Active to Compromised is caused by a client issuing a Revoke operation with
844 a Revocation Reason of Compromised.
845 5. The transition from Active to Deactivated is able toSHALL occur in one of three ways:
846 The object's Deactivation Date is reached.
847 A client issues a Revoke operation, with a Revocation Reason other than Compromised.
848 The client issues a Modify Attribute operation, modifying the Deactivation Date to a date in
849 the past, or the current date. In this case, the server shallSHALL either set the Deactivation
850 Date attribute to the date in the past or fail the operation, depending on server policy.
851 6. The transition from Deactivated to Destroyed is caused by a client issuing a Destroy operation.
852 The server destroys the object when (and if) server policy dictates.
853 7. The transition from Deactivated to Compromised is caused by a client issuing a Revoke operation
854 with a Revocation Reason of Compromised.
855 8. The transition from Compromised to Destroyed Compromised is caused by a client issuing a
856 Destroy operation. The server destroys the object when (and if) server policy dictates.
2.16
862Initial Date
863This is the date and time when the Managed Object was first created or registered at the server. This time
864corresponds to state transition 1 (see Section 2.15). This attribute shallSHALL be set by the server when
865the object is created or registered, and then shall notSHALL NOT be changed. This attribute is also set
866for non-cryptographic objects (e.g., templates) when they are first registered with the server.
2.18
876Process Start Date
877This is the date and time when a Managed Symmetric Key Object mayMAY begin to be used for process
878purposes (e.g., decryption or unwrapping), depending on the value of its Cryptographic Usage Mask
879attribute. The object shall notSHALL NOT be used for these cryptographic purposes before the Process
880Start Date has been reached. This value mayMAY be equal to, but shall notSHALL NOT precede, the
881Activation Date. Once the Process Start Date has occurred, then this attribute shall notSHALL NOT be
882modified by the server or the client.
2.19
885Protect Stop Date
886This is the date and time when a Managed Symmetric Key Object shall notSHALL NOT be used for
887protect purposes (e.g., encryption or wrapping), depending on the value of its Cryptographic Usage Mask
888attribute. This value mayMAY be equal to, but shall notSHALL NOT be later than the Deactivation Date.
889Once the Protect Stop Date has occurred, then this attribute shall notSHALL NOT be modified by the
890server or the client.
2.20
893Deactivation Date
894This is the date and time when the Managed Cryptographic Object shall notSHALL NOT be used for any
895purpose, except for decryption, signature verification, or unwrapping, but only under extraordinary
896circumstances and only when special permission is granted. This time corresponds to state transition 6
2.21
901Destroy Date
902This is the date and time when the Managed Object was destroyed. This time corresponds to state
903transitions 2, 7, or 9 (see Section 2.15). This value is set by the server when the object is destroyed due
904to the reception of a Destroy operation, or due to server policy or out-of-band administrative action.
2.23
913Compromise Date
914This is the date and time when the Managed Cryptographic Object entered into the compromised state.
915This time corresponds to state transitions 3, 5, 8, or 10 (see Section 2.15). This time indicates when the
916key management system was made aware of the compromise, not necessarily when the compromise
917occurred. This attribute is set by the server when it receives a Revoke operation with a Revocation
918Reason of Compromised, or due to server policy or out-of-band administrative action.
2.25
930Archive Date
931This is the date and time when the Managed Object was placed in archival storage. This value is set by
932the server as a part of the Archive operation. This attribute is deleted whenever a Recover operation is
933performed.
2.26
936Object Group
937An object mayMAY be part of a group of objects. An object mayMAY belong to more than one group of
938objects. To assign an object to a group of objects, the object group name shouldSHOULD be set into this
939attribute.
2.27
942Link
943The Link attribute is a structure (see Table 87) used to create a link from one Managed Cryptographic
944Object to another, closely related target Managed Cryptographic Object. The link has a type, and the
945allowed types differ, depending on the Object Type of the Managed Cryptographic Object. The Linked
946Object Identifier identifies the target Managed Cryptographic Object by its Unique Identifier. The link
947contains information associated between the Managed Cryptographic Objects (e.g., the private key
948corresponding to a public key; the parent certificate for a certificate in a chain; or for a derived symmetric
949key, the base key from which it was derived).
950Possible values of Link Type in accordance with the Object Type of the Managed Cryptographic Object
951are:
2.29
1009Contact Information
1010The Contact Information attribute is optional, and its content is used for contact purposes only. It is not
1011used for policy enforcement. The attribute is set by the client or the server.
2.30
1014Last Changed Date
1015This is a meta attribute that contains the date and time of the last change to the contents or attributes of
1016the specified object.
2.31
1019Custom Attribute
1020A Custom Attribute is a client- or server-defined attribute intended for vendor-specific purposes. It is
1021created by the client and not interpreted by the server, or is created by the server and mayMAY be
1022interpreted by the client. All custom attributes created by the client shallSHALL adhere to a naming
1023scheme where the name of the attribute shallSHALL have a prefix of 'x-', meaning extended. All custom
1024attributes created by the key management server shallSHALL adhere to a naming scheme where the
1025name of the attribute shallSHALL have a prefix of 'y-'. The tag type Custom Attribute is not able to identify
1026the particular attribute; hence such an attribute is able toSHALL only appear in an Attribute Structure with
1027its name as defined in Section 1.9.1.
3.1
1064Create
1065This operation requests the server to generate a new symmetric key as a Managed Cryptographic Object.
1066This operation is not used to create a Template object (see Register operation, Section 3.3).
1067The request contains information about the type of object being created, and some of the attributes to be
1068assigned to the object (e.g., Cryptographic Algorithm, Cryptographic Length, etc). This information
1069mayMAY be specified by the names of Template objects that already exist.
1070The response contains the Unique Identifier of the created object. The server shallSHALL copy the
1071Unique Identifier returned by this operation into the ID Placeholder variable.
Request Payload
Object Required Description
Object Type Yes Determines the type of object to be
created.
Template-Attribute Yes Specifies desired object attributes
using templates and/or as individual
attributes.
Response Payload
Object Required Description
Object Type Yes Type of object created.
Unique Identifier Yes The Unique Identifier of the newly
created object.
Template-Attribute No An optional list of object attributes with
values that were not specified in the
request, but have been implicitly set by
the key management server.
Attribute Required
Cryptographic Algorithm Yes
Cryptographic Usage Yes
Mask
Request Payload
Object Required Description
Common Template-Attribute No Specifies desired attributes in
templates and/or as individual
attributes that apply to both the Private
and Public Key Objects.
Private Key Template-Attribute No Specifies templates and/or attributes
that apply to the Private Key Object.
Order of precedence applies.
Public Key Template-Attribute No Specifies templates and/or attributes
that apply to the Public Key Object.
Order of precedence applies.
Response Payload
Object Required Description
Private Key Unique Identifier Yes The Unique Identifier of the newly
created Private Key object.
Public Key Unique Identifier Yes The Unique Identifier of the newly
created Public Key object.
Private Key Template-Attribute No An optional list of attributes, for the
Private Key Object, with values that
were not specified in the request, but
have been implicitly set by the key
management server.
Public Key Template-Attribute No An optional list of attributes, for the
Public Key Object, with values that
were not specified in the request, but
have been implicitly set by the key
management server.
3.3
1103Register
1104This operation requests the server to register a Managed Object that was created by the client or
1105obtained by the client through some other means, allowing the server to manage the object. The
1106arguments in the request are similar to those in the Create operation, but also mayMAY contain the object
1107itself, for storage by the server. Optionally, objects that are not to be stored by the key management
1108system mayMAY be omitted from the request (e.g., private keys).
1109The request contains information about the type of object being registered and some of the attributes to
1110be assigned to the object (e.g., Cryptographic Algorithm, Cryptographic Length, etc). This information
1111mayMAY be specified by the use of a Template-Attribute object.
1112The response contains the Unique Identifier assigned by the server to the registered object. The server
1113shallSHALL copy the Unique Identifier returned by this operations into the ID Placeholder variable. The
1114Initial Date attribute of the object shallSHALL be set to the current time.
Request Payload
Object Required Description
Object Type Yes Determines the type of object being
registered.
Template-Attribute Yes Specifies desired object attributes
using templates and/or as individual
attributes.
Certificate, Symmetric Key, Private No The object being registered. The object
Key, Public Key, Split Key, Secret Data and attributes mayMAY be wrapped.
or Opaque Object Some objects (e.g., Private Keys),
mayMAY be omitted from the request.
Attribute Required
Cryptographic Algorithm Yes, mayMAY be omitted
only if this information is
encapsulated in the Key
Block. Does not apply to
Secret Data. If present,
then Cryptographic
Length below shallSHALL
also be present.
Cryptographic Length Yes, mayMAY be omitted
only if this information is
encapsulated in the Key
Block. Does not apply to
Secret Data. If present,
then Cryptographic
Algorithm above
shallSHALL also be
present.
Cryptographic Usage Yes.
Mask
3.4
1120Re-key
1121This request is used to generate a replacement key for an existing symmetric key. It is analogous to the
1122Create operation, except that many of the attributes of the new key are unchanged from the original key.
1123As the replacement key takes over the name attribute of the existing key, Re-key shouldSHOULD only be
1124performed once on a given key.
1125The server shallSHALL copy the Unique Identifier of the replacement key returned by this operation into
1126the ID Placeholder variable.
1127As a result of Re-key, attributes of the existing key are changed similar to performing a Revoke on that
1128key with a Revocation Reason of Superseded, and the Link attribute is set to point to the replacement
1129key.
1130If Offset is set and if such times exist, then the times of the new key shallSHALL be set based on the
1131times of the existing key as follows:
1132 Table 106: Computing New Dates from Offset during Re-key
1133Attributes that are not copied from the existing key and are handled in a specific way are:
Attribute Action
Initial Date Set to current time
Destroy Date Not set
Compromise Occurrence Not set
Date
Compromise Date Not set
Revocation Reason Not set
Unique Identifier New value generated
Usage Limits The Total Bytes/Total
Objects value is copied
from the existing key,
while the Byte
Count/Object Count
values are set to the Total
Bytes/Total Objects.
Name Set to the name(s) of the
existing key; all name
attributes of the existing
key are removed.
State Set based on attributes
Digest Recomputed from the
new key value
Link Set to point to the existing
key as the replaced key
Last Change Date Set to current time
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the new
Symmetric Key.
Template-Attribute No An optional list of object attributes with
values that were not specified in the
request, but have been implicitly set by
the key management server.
3.5
1137Derive Key
1138This request is used to derive a symmetric key using a key or secret data that is already known to the key
1139management system. It shallSHALL only apply to Managed Cryptographic Objects that have the Derive
1140Key bit set in the Cryptographic Usage Mask attribute of the specified Managed Object (i.e., are able to
1141be used for key derivation). If the operation is issued for an object that does not have this bit set, then the
1142server shallSHALL return a response with a Result Reason of Operation Not Supported. For all derivation
1143methods, the client shallSHALL specify the desired length of the derived key or secret using the
1144Cryptographic Length attribute. If a key is created, then the client shallSHALL specify both its
1145Cryptographic Length and Cryptographic Algorithm. If the specified length exceeds the output of the
1146derivation method, then the server shallSHALL return an error. Clients have the option to derive multiple
1147keys and IVs by creating a Secret Data object and specifying a Cryptographic Length that is the total
1148length of the derived object. The length shall notSHALL NOT exceed the length of the output that is able
1149to be returned by the chosen derivation method.
1150The fields in the request specify the Unique Identifiers of the keys or secrets to be used for derivation
1151(e.g., some derivation methods mayMAY require multiple keys or secrets to derive the result), the method
1152to be used to perform the derivation, and any parameters needed by the specified method. The method is
1153specified as an enumerated value. Currently defined derivation methods include:
1154 PBKDF2 – This method is used to derive a symmetric key from a password or pass phrase. The
1155 PBKDF2 method is published in RSA Laboratories' Public-Key Cryptography Standards (PKCS)
1156 series, specifically PKCS #5 v2.0, and also published as Internet Engineering Task Force's RFC
1157 2898.
1158 HASH – This method derives a key by computing a hash over the derivation key or the derivation
1159 data.
Request Payload
Object Required Description
Object Type Yes Determines the type of object to be
created.
Unique Identifier Yes. Determines the object or objects to
MayMAY be used to derive a new key. At
be most, two mayMAY be specified:
repeated one for the derivation key and
another for the secret data. Note
that the ID Placeholder is not able to
be used here.
Derivation Method Yes An Enumeration object specifying
the method to be used to derive the
new key.
Derivation Parameters Yes A Structure object containing the
parameters needed by the specified
derivation method.
Template-Attribute Yes Specifies desired object attributes
using templates and/or as individual
attributes; length shallSHALL
always be specified and algorithm is
required for the creation of
symmetric keys.
3.6
1199Certify
1200This request is used to obtain a new certificate for a public key. Only a single certificate maySHALL be
1201requested at a time. Server support for this operation is optional, as it requires that the key management
1202system have access to a certification authority.
1203Requests are passed as Octet Strings, which allow multiple certificate request types for X.509 certificates
1204(e.g., PKCS#10, PEM, etc) or PGP certificates to be submitted to the server.
1205The new Certificate object whose Unique Identifier is returned mayMAY be obtained by the client via a
1206Get operation in the same batch, using the ID Placeholder mechanism.
1207As a result of Certify, the Link attribute of the Public Key and of the new Certificate shallSHALL be set to
1208point at each other.
1209The server shallSHALL copy the Unique Identifier of the new certificate returned by this operation into the
1210ID Placeholder variable.
1211If the information in the Certificate Request conflicts with the attributes specified in the Template-Attribute,
1212then the information in the Certificate Request takes precedence.
Request Payload
Object Required Description
Unique Identifier No The Unique Identifier of the Public Key
being certified. If omitted, then the ID
Placeholder is substituted by the
server.
Certificate Request Type Yes An Enumeration object specifying the
type of certificate request.
Certificate Request Yes An Octet String object with the
certificate request.
Template-Attribute No Specifies desired object attributes
using templates and/or as individual
attributes.
3.7
1215Re-certify
1216This request is used to renew an existing certificate with the same key pair. Only a single certificate may
1217SHALL be renewed at a time. Server support for this operation is optional, as it requires that the key
1218management system have access to a certification authority.
1219Requests are passed as Octet Strings, which allow multiple certificate request types for X.509 certificates
1220(e.g., PKCS#10, PEM, etc) or PGP certificates to be submitted to the server.
1221The server shallSHALL copy the Unique Identifier of the certificate returned by this operation into the ID
1222Placeholder variable.
1223If the information in the Certificate Request conflicts with the attributes specified in the Template-Attribute,
1224then the information in the Certificate Request takes precedence.
1225Since the new certificate assumes the name attribute of the existing certificate, Re-certify shouldSHOULD
1226only be performed once on a given certificate.
1227As a result of Re-certify, attributes of the existing certificate are changed similar to the result of performing
1228a Revoke on that certificate with a Revocation Reason of Superseded.
1229In addition, the Link attribute of the existing certificate and of the new certificate are set to point at each
1230other. In addition, the Link attribute of the Public Key is changed to point to the new certificate. If Offset is
1231set, then the times of the new certificate shallSHALL be set based on the times of the existing certificate
1232(if such times exist) as follows:
1233 Table 116: Computing New Dates from Offset during Re-certify
1234Attributes that are not copied from the existing certificate and that are handled in a specific way are:
Request Payload
Object Required Description
Unique Identifier No The Unique Identifier of the Certificate
being renewed. If omitted, then the ID
Placeholder is substituted by the
server.
Certificate Request Type Yes An Enumeration object specifying the
type of certificate request.
Certificate Request Yes An Octet String object with the
certificate request.
Offset No An Interval object indicating the
difference between the Initialization
Time of the new certificate and the
Activation Date of the new certificate.
Template-Attribute No Specifies desired object attributes
using templates and/or as individual
attributes.
3.8
1238Locate
1239This operation requests that the server searches for one or more Managed Objects, specified by one or
1240more attributes. All attributes are allowed to be used. However, no attributes specified in the request
1241shouldSHOULD contain Attribute Index values. Attribute Index values shallSHALL be ignored by the
1242Locate operation. The request mayMAY also contain a Maximum Items field, which specifies the
1243maximum number of objects to be returned. If the Maximum Items field is omitted, then the server
1244mayMAY return all objects matched, or mayMAY impose an internal maximum limit due to resource
1245limitations.
1246If more than one object satisfies the identification criteria specified in the request, then the response
1247mayMAY contain Unique Identifiers for multiple Managed Objects. Returned objects shallSHALL match
1248all of the attributes in the request. If no objects match, then an empty response payload is returned.
1249The server returns a list of Unique Identifiers of the found objects, which then mayMAY be retrieved using
1250the Get operation. If the objects are archived, then the Recover and Get operations are required to be
1251used. If a single Unique Identifier is returned to the client, then the server shallSHALL copy the Unique
1252Identifier returned by this operation into the ID Placeholder variable. If the Locate operation matches
1253more than one object, and the Maximum Items value is omitted in the request, or is set to a value larger
1254than one, then the server shall notSHALL NOT set the ID Placeholder value, causing any subsequent
1255operations that are batched with the Locate, and which do not specify a Unique Identifier explicitly, to fail.
1256This ensures that these batched operations may SHALL proceed only if a single object is returned by
1257Locate.
1258When using the Name or Object Group attributes for identification, wild-cards or regular expressions
1259mayMAY be supported by specific key management system implementations.
1260The Date attributes (e.g., Initial Date, Activation Date, etc) aremay be used to specify a time or a time
1261range. If a single instance of a given Date attribute is used (e.g., the Activation Date), then objects with
1262the same Date attribute are matching candidate objects. If two instances of the same Date attribute are
1263used (i.e., with two different values specifying a range), then objects for which the Date attribute is inside
1264or at a limit of the range are matching candidate objects. If a Date attribute is set to its largest possible
1265value, then it is equivalent to an undefined attribute.
1266When the Cryptographic Usage Mask attribute is specified in the request, candidate objects are
1267compared against this field via an operation that consists of a logical AND of the requested mask with the
1268mask in the candidate object, and then a comparison of the resulting value with the requested mask. For
1269example, if the request contains a mask value of 10001100010000, and a candidate object mask contains
127010000100010000, then the logical AND of the two masks is 10000100010000, which is compared against
127110001100010000 and fails the match. This means that a matching candidate object at least has all of the
1272bits set in its mask that are set in the requested mask, but mayMAY have additional bits set.
1273When the Usage Allocation attribute is specified in the request, matching candidate objects shallSHALL
1274have an Object or Byte Count and Total Objects or Bytes equal to or larger than the values specified in
1275the request.
1276When an attribute defined as a structure is specified, all of the structure fields are not required to be
184kmip-1.0-spec-ed-0.98 3 September 2009
185Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 62 of 135
1277specified. For instance, for the Link attribute, if the Linked Object Identifier value is specified without the
1278Link Type value, then matching candidate objects have the Linked Object Identifier as specified,
1279irrespective of their Link Type.
1280The Storage Status Mask field (see Section 8.1.3.3.2) is used to indicate whether only on-line objects,
1281only archived objects, or both on-line and archived objects are to be searched. Note that the server
1282mayMAY store attributes of archived objects in order to expedite Locate operations that search through
1283archived objects.
Request Payload
Object Required Description
Maximum Items No An Integer object that indicates the
maximum number of object identifiers
the server shallSHALL return.
Storage Status Mask No An Integer object (used as a bit mask)
that indicates whether only on-line
objects, only archived objects, or both
on-line and archived objects are to be
searched. If omitted, then on-line only
is assumed.
Attribute Yes, Specifies an attribute and its value that
mayMAY are required to match the desired
be object.
repeated
Response Payload
Object Required Description
Unique Identifier No, May be The Unique Identifier of the located
repeated objects.
3.9
1286Check
1287This operation requests that the server checks for the use of a Managed Object according to values
1288specified in the request. This operation shouldSHOULD only be used when placed in a batched set of
1289operations, usually following a Locate, Create, Create Pair, Derive Key, Certify, Re-Certify or Re-Key
1290operation, and followed by a Get operation. The Unique Identifier field in the request mayMAY be omitted
1291if the operation is in a batched set of operations and follows an operation that sets the ID Placeholder
1292variable.
1293If the server determines that the client is allowed to use the object according to the specified attributes,
1294then the server returns the Unique Identifier of the object. If the server determines that the client is not
1295allowed to use the object according to the specified attributes, then the server invalidates the ID
1296Placeholder value and does not return the Unique Identifier, and the operation returns the set of attributes
1297specified in the request that caused the server policy denial. The only attributes returned are those
1298according to which the server determined that the client is not allowed to use the object, allowing the
1299client to determine how to proceed. The operation also returns a failure, and the server shallSHALL
1300ignore any subsequent operations in the batch.
1301The additional objects that mayMAY be specified in the request are limited to:
1302 Usage Limits Byte Count or Usage Limits Object Count (see Section 2.14)– The request
1303 mayMAY contain the usage amount that the client deems necessary to complete its needed
187kmip-1.0-spec-ed-0.98 3 September 2009
188Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 63 of 135
1304 function. This does not require that any subsequent Get Usage Allocation operations request this
1305 amount. It only means that the client is ensuring that the amount specified is available.
1306 Cryptographic Usage Mask – This is used to specify the cryptographic operations for which the
1307 client intends to use the object (see Section 2.12). This allows the server to determine if the policy
1308 allows this client to perform these operations with the object. Note that this mayMAY be a
1309 different value from the one specified in a Locate operation that precedes this operation. Locate,
1310 for example, mayMAY specify a Cryptographic Usage Mask requesting a key that is able toMAY
1311 be used for both Encryption and Decryption, but the value in the Check operation mayMAY
1312 specify that the client is only using the key for Encryption at this time.
1313 Lease Time – This specifies a desired lease time (see Section 2.13). The client mayMAY use this
1314 to determine if the server allows the client to use the object with the specified lease or longer.
1315 Including this attribute in the Check operation does not actually cause the server to grant a lease,
1316 but only indicates that the requested lease time value is able toMAY be granted if requested by a
1317 subsequent, batched, Obtain Lease operation.
1318Note that these objects are not encoded in an Attribute structure as shown in Section 1.9.1
Request Payload
Object Required Description
Unique Identifier No Determines the object being checked.
If omitted, then the ID Placeholder is
substituted by the server.
Usage Limits Byte Count No Specifies the number of bytes to be
protected to be checked against server
policy. ShallSHALL only be present if
Usage Limits Object Count is not
present.
Usage Limits Object Count No Specifies the number of objects to be
protected to be checked against server
policy. ShallSHALL only be present if
Usage Limits Byte Count is not
present.
Cryptographic Usage Mask No Specifies the Cryptographic Usage for
which the client uses the object.
Lease Time No Specifies a Lease Time value that the
Client is asking the server to validate
against server policy.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object.
Usage Limits Byte Count No Returned by the Server if the Usage
Limits value specified in the Request
Payload is larger than the value that
the server policy allows. ShallSHALL
only be present if Usage Limits Object
Count is not present.
Usage Limits Object Count No Returned by the Server if the Usage
Limits value specified in the Request
3.10
1322Get
1323This operation requests that the server returns the Managed Object specified in the request by its Unique
1324Identifier. The Unique Identifier field in the request mayMAY be omitted if the Get operation is in a
1325batched set of operations and follows an operation that sets the ID Placeholder variable.
1326Only a single object is returned. The response contains the Unique Identifier of the object, along with the
1327object itself, which mayMAY be wrapped using a wrapping key specified in the request.
Request Payload
Object Required Description
Unique Identifier No Determines the object being requested.
If omitted, then the ID Placeholder is
substituted by the server.
Key Wrapping Specification No Specifies keys and other information
for wrapping the returned object. This
field shall notSHALL NOT be specified
if the requested object is a Template.
Response Payload
Object Required Description
Object Type Yes Type of object
Unique Identifier Yes The Unique Identifier of the object
Certificate, Symmetric Key, Private Yes The cryptographic object being
Key, Public Key, Split Key, Template, returned
Secret Data, or Opaque Object
3.11
1330Get Attributes
1331This operation returns one or more attributes of a Managed Object. The object is specified by its Unique
1332Identifier and the attributes are specified by name in the request. If a specified attribute has multiple
1333instances, then all instances are returned. If a specified attribute does not exist (i.e., has no value), then it
Request Payload
Object Required Description
Unique Identifier No Determines the object whose attributes
are being requested. If omitted, then
the ID Placeholder is substituted by the
server.
Attribute Name Yes, May Specifies a desired attribute of the
be object
repeated
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
Attribute No, May be The requested attribute for the object
repeated
3.12
1338Get Attribute List
1339This operation returns a list of the attribute names associated with a Managed Object. The object is
1340specified by its Unique Identifier.
Request Payload
Object Required Description
Unique Identifier No Determines the object whose attribute
names are being requested. If omitted,
then the ID Placeholder is substituted
by the server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
Attribute Name Yes, May The requested attribute names for the
be object
repeated
3.13
1343Add Attribute
1344This request adds a new attribute instance to a Managed Object and sets its value. The request contains
1345the Unique Identifier of the Managed Object to which the attribute pertains, and the attribute name and
1346value. For non multi-instance attributes, this is how they are created. For multi-instance attributes, this is
1347how the first and subsequent values are created. Existing attribute values are only able to be changed by
Request Payload
Object Required Description
Unique Identifier No The Unique Identifier of the object. If
omitted, then the ID Placeholder is
substituted by the server.
Attribute Yes Specifies the attribute of the object to
be added.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
Attribute Yes The added attribute
3.14
1354Modify Attribute
1355This request modifies the value of an existing attribute instance associated with a Managed Object. The
1356request contains the Unique Identifier of the Managed Object whose attribute is to be modified, and the
1357attribute name, optional Attribute Index, and new value. Only existing attributes mayMAY be changed via
1358this operation. New attributes are only able to be added by the Add Attribute operation. Read-Only
1359attributes are not able to be changed using this operation. If an Attribute Index is specified, then only the
1360specified instance is modified. If the attribute has multiple instances, and no Attribute Index is specified in
1361the request, then the Attribute Index is assumed to be 0. If the attribute does not support multiple
1362instances, then the Attribute Index shall notSHALL NOT be specified. Using a non-existent Attribute Index in
1363a Modify Attribute operation shallSHALL result in an error.
Request Payload
Object Required Description
Unique Identifier No The Unique Identifier of the object. If
omitted, then the ID Placeholder is
substituted by the server.
Attribute Yes Specifies the attribute of the object to
be modified.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
Attribute Yes The modified attribute
Request Payload
Object Required Description
Unique Identifier No Determines the object whose attributes
are being deleted. If omitted, then the
ID Placeholder is substituted by the
server.
Attribute Name Yes Specifies the name of the attribute to
be deleted.
Attribute Index No Specifies the Index of the Attribute.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
Attribute Yes The deleted attribute
3.16
1377Obtain Lease
1378This request is used to obtain a new Lease Time for a specified Managed Object. The Lease Time is an
1379interval value that determines when the client's internal cache of information about the object expires and
1380needs to be renewed. If the returned value of the lease time is zero, then the server is indicating that no
1381lease interval is effective, and the client mayMAY use the object without any lease time limit. If a client's
1382lease expires, then the client shall notSHALL NOT use the associated cryptographic object until a new
1383lease is obtained. If the server determines that a new lease shall notSHALL NOT be issued for the
1384specified cryptographic object, then the server shallSHALL respond to the Obtain Lease request with a
1385failure.
1386The response payload for the operation also contains the current value of the Last Changed Date
1387attribute for the object. This mayMAY be used by the client to determine if any of the attributes cached by
1388the client need to be refreshed, by comparing this time to the time when the attributes were previously
1389obtained.
Request Payload
Object Required Description
Unique Identifier No Determines the object for which the
lease is being obtained. If omitted, then
the ID Placeholder is substituted by the
server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object.
Lease Time Yes An interval (in seconds) that specifies
the amount of time that the object
mayMAY be used until a new lease
needs to be obtained.
Last Changed Date Yes The date and time indicating when the
latest change was made to the
contents or any attribute of the
specified object.
3.17
1392Get Usage Allocation
1393This request is used to obtain an allocation from the current Usage Limits values to allow the client to use
1394the Managed Cryptographic Object for protection purposes. It only applies to Managed Cryptographic
1395Objects that are able to be used for protection purposes (i.e., symmetric keys, private keys and public
1396keys) and is only valid if the Managed Cryptographic Object has a Usage Limits attribute. Usage for
1397process purposes (e.g., decryption, verification, etc.) is not limited and is not able to be allocated. A
1398Managed Cryptographic Object that has a Usage Limits attribute shall notSHALL NOT be used by a client
1399for protection purposes unless an allocation has been obtained using this operation. The operation
1400shallSHALL only be requested during the time that protection is enabled for these objects (i.e., after the
1401Activation Date and before the Protect Stop Date). If the operation is requested for an object that has no
1402Usage Limits attribute, or is not an object that is able toMAY be used for protection purposes, then the
1403server shallSHALL return a response with a Result Reason of Operation Not Supported.
1404The fields in the request specify the number of bytes or number of objects that the client needs to protect.
1405Exactly one of the two count fields shallSHALL be specified in the request. If the requested amount is not
1406available or if the Managed Object is not able to be used for protection purposes at this time, then the
1407server shallSHALL return an error . The server shallSHALL assume that the entire allocated amount has
1408been consumed. Once the entire allocated amount has been consumed, the client shall notSHALL NOT
1409continue to use the Managed Cryptographic Object for protection purposes until a new allocation is
1410obtained.
Request Payload
Object Required Description
Unique Identifier No Determines the object whose usage
allocation is being requested. If
omitted, then the ID Placeholder is
substituted by the server.
Usage Limits Byte Count No The number of bytes to be protected.
ShallSHALL only be present if Usage
Limits Object Count is not present.
Usage Limits Object Count No The number of objects to be protected.
ShallSHALL only be present if Usage
Limits Byte Count is not present.
3.18
1414Activate
1415This request is used to activate a Managed Cryptographic Object. The request shall notSHALL NOT
1416specify a Template object. The request contains the Unique Identifier of the Managed Cryptographic
1417Object . The operation is only able to be performed on an object in the Pre-Active state and has the effect
1418of changing its state to Active, and setting its Activation Date to the current date and time.
Request Payload
Object Required Description
Unique Identifier No Determines the object being activated.
If omitted, then the ID Placeholder is
substituted by the server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
3.19
1421Revoke
1422This request is used to revoke a Managed Cryptographic Object or an Opaque Object. The request shall
1423notSHALL NOT specify a Template object. The request contains the unique identifier of the Managed
1424Cryptographic Object and a reason for the revocation (e.g., “compromised”, “no longer used”, etc).
1425Special authentication and authorization shouldSHOULD be enforced to perform this request (see Usage
1426Guide). Only the object creator or an authorized security officer shouldSHOULD be allowed to issue this
1427request. The operation has one of two effects. If the revocation reason is “compromised”, then the object
1428is placed into the “compromised” state, and the Compromise Date attribute is set to the current date and
1429time. Otherwise, the object is placed into the “deactivated” state, and the Deactivation Date attribute is set
1430to the current date and time.
Request Payload
Object Required Description
Unique Identifier No Determines the object being revoked. If
omitted, then the ID Placeholder is
substituted by the server.
Revocation Reason Yes Specifies the reason for revocation.
Compromise Occurrence Date No ShallSHALL be specified if the
Revocation Reason is 'compromised'.
3.20
1433Destroy
1434This request is used to indicate to the server that the key material for the specified Managed Object
1435shallSHALL be destroyed. The meta-data for the key material mayMAY be retained by the server (e.g.,
1436used to ensure that an expired or revoked private signing key is no longer available). Special
1437authentication and authorization shouldSHOULD be enforced to perform this request (see Usage Guide).
1438Only the object creator or an authorized security officer shouldSHOULD be allowed to issue this request.
1439If the Unique Identifier specifies a Template object, then the object itself, including all meta-data,
1440shallSHALL be destroyed.
Request Payload
Object Required Description
Unique Identifier No Determines the object being destroyed.
If omitted, then the ID Placeholder is
substituted by the server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
3.21
1443Archive
1444This request is used to specify that a Managed Object mayMAY be archived. The actual time when the
1445object is archived, the location of the archive, or level of archive hierarchy is determined by the policies
1446within the key management system and is not specified by the client. The request contains the unique
1447identifier of the Managed Object. Special authentication and authorization shouldSHOULD be enforced to
1448perform this request (see Usage Guide). Only the object creator or an authorized security officer
1449shouldSHOULD be allowed to issue this request. This request may be consideredis only a “hint” to the
1450key management system, which may or may not choose to possibly act upon this requestarchive the
1451object.
Request Payload
Object Required Description
Unique Identifier No Determines the object being archived.
If omitted, then the ID Placeholder is
substituted by the server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
3.22
1454Recover
1455This request is used to obtain access to a Managed Object that has been archived. This request mayMAY
1456require asynchronous polling to obtain the response due to delays caused by retrieving the object from
1457the archive.. Once the response is received, the object is now on-line, and mayMAY be obtained (e.g., via
1458a Get operation). Special authentication and authorization shouldSHOULD be enforced to perform this
1459request (see Usage Guide).
Request Payload
Object Required Description
Unique Identifier No Determines the object being recovered.
If omitted, then the ID Placeholder is
substituted by the server.
Response Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object
3.23
1462Validate
1463This requests that the server validate a certificate chain and return information on its validity. Only a
1464single certificate chain shallSHALL be included in each request. Support for this operation at the server is
1465optional.
1466The request may contain a list of certificate objects, and/or a list of Unique Identifiers that identify
1467Managed Certificate objects. Together, the two lists compose a certificate chain to be validated. The
1468request mayMAY also contain a date for which the certificate chain is required to be valid.
1469The method or policy by which validation is conducted is a decision of the server and is outside of the
1470scope of this protocol. Likewise, the order in which the supplied certificate chain is validated and the
1471specification of trust anchors used to terminate validation are also controlled by the server.
Request Payload
Object Required Description
Certificate No, May be One or more Certificates.
repeated
Unique Identifier No, May be One or more Unique Identifiers of
repeated Certificate Objects.
Validity Date No A Date-Time object indicating when the
certificate chain is valid.
Response Payload
Object Required Description
Validity Indicator Yes An Enumeration object indicating
whether the certificate chain is valid,
3.24
1474Query
1475This request is used by the client to interrogate the server to determine its capabilities and/or protocol
1476mechanisms. The Query operation shouldSHOULD be invocable by unauthenticated clients to interrogate
1477server features and functions. The Query Function field in the request shallSHALL contain one or more of
1478the following items:
1479 Query Operations
1480 Query Objects
1481 Query Server Information
1482 Query Application Namespaces
1483One, two, or all three of the above functions may be specified.
1484The Operation fields in the response contain Operation enumerated values, which shallSHALL list the
1485optional operations that the server supports. If the request contains a Query Operations value in the
1486Query Function field, then these fields shallSHALL be returned in the response. The optional operations
1487are:
1488 Validate
1489 Certify
1490 Re-Certify
1491 Notify
1492 Put
1493The Object Type fields in the response contain Object Type enumerated values, which shallSHALL list
1494the object types that the server supports. If the request contains a Query Objects value in the Query
1495Function field, then these fields shallSHALL be returned in the response. The object types (any of which
1496are optional) are:
1497 Certificate
1498 Symmetric Key
1499 Public Key
1500 Private Key
1501 Split Key
1502 Template
1503 Secret Data
1504 Opaque Object
1505The Server Information field in the response is a structure containing vendor-specific fields and/or
1506substructures. If the request contains a Query Server Information value in the Query Function field, then
1507this field shallSHALL be returned in the response.
1508The Application Namespace fields in the response contain the namespaces that the server SHALL
1509generate values for if requested by the client (see Section 2.28). These fields SHALL only be returned in
1510the response if the request contains a Query Application Namespaces value in the Query Function field.
1511Note that the response payload is empty if there are no values to return.
Response Payload
Object Required Description
Operation No, May be Specifies an Operation that is
repeated supported by the server. Only optional
operations shallSHALL be listed.
Object Type No, May be Specifies a Managed Object Type that
repeated is supported by the server.
Vendor Identification No ShallSHALL be returned if Query
Server Information is requested. The
Vendor Identification shallSHALL be a
text string that uniquely identifies the
vendor.
Server Information No Contains vendor-specific information
that maypossibly be of interest to the
client.
Application Namespace No, May be Specifies an Application Namespace
repeated supported by the server.
3.25
1514Cancel
1515This request is used to cancel an outstanding asynchronous operation. The correlation value (see Section
15165.8) of the original operation shallSHALL be specified in the request. The server shallSHALL respond with
1517a Cancellation Result that contains one of the following values:
1518 Canceled – The cancel operation succeeded in canceling the pending operation.
1519 Unable To Cancel – The cancel operation is unable to cancel the pending operation.
1520 Completed – The pending operation completed successfully before the cancellation operation
1521 was able to cancel it.
1522 Failed – The pending operation completed with a failure before the cancellation operation was
1523 able to cancel it.
1524 Unavailable – The specified correlation value did not match any recently pending or completed
1525 asynchronous operations.
1526 The response to this operation is not able to be asynchronous.
Request Payload
Object Required Description
Asynchronous Correlation Value Yes Specifies the request being canceled
3.26
1529Poll
1530This request is used to poll the server in order to obtain the status of an outstanding asynchronous
1531operation. The correlation value (see Section 5.8) of the original operation shallSHALL be specified in the
1532request. The response to this operation is not able to be asynchronous.
Request Payload
Object Required Description
Asynchronous Correlation Value. Yes Specifies the request being polled
4.1
1544Notify
1545This operation is used to notify a client of events that resulted in changes to attributes of an object. This
1546operation is only ever sent by a server to a client via means outside of the normal client request/response
1547protocol, using information known to the server via unspecified configuration or administrative
1548mechanisms. It contains the Unique Identifier of the object to which the notification applies, and a list of
1549the attributes whose changed values have triggered the notification. The message is sent as a normal
1550Request message, except that the Maximum Response Size, Asynchronous Indicator, Batch Error
1551Continuation Option, and Batch Order Option fields are not allowed. The client shallSHALL send a
1552response in the form of a Response Message containing no payload, unless both the client and server
1553have prior knowledge (obtained via out-of-band mechanisms) that the client is not able to respond. Server
1554and Client support for this message is optional.
Message Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object.
Attribute Yes, May The attributes that have changed. This
be includes at least the Last Changed
repeated Date attribute.
223kmip-1.0-spec-ed-0.98 3 September 2009
224Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 75 of 135
1555 Table 157: Notify Message Payload
4.2
1556Put
1557This operation is used to “push” Managed Cryptographic Objects to clients. This operation is only ever
1558sent by a server to a client via means outside of the normal client request/response protocol, using
1559information known to the server via unspecified configuration or administrative mechanisms. It contains
1560the Unique Identifier of the object that is being sent, and the object itself. The message is sent as a
1561normal Request message, except that the Maximum Response Size, Asynchronous Indicator, Batch Error
1562Continuation Option, and Batch Order Option fields are not allowed. The client shallSHALL send a
1563response in the form of a Response Message containing no payload, unless both the client and server
1564have prior knowledge (obtained via out-of-band mechanisms) that the client is not able to respond. Server
1565and client support for this message is optional.
1566The Put Function field indicates whether the object being “pushed” is a new object, or is a replacement for
1567an object already known to the client (e.g., when pushing a certificate to replace one that is about to
1568expire, the Put Function field would be set to indicate replacement, and the Unique Identifier of the
1569expiring certificate would be placed in the Replaced Unique Identifier field). The Put Function shallSHALL
1570contain one of the following values:
1571 New – which indicates that the object is not a replacement for another object.
1572 Replace – which indicates that the object is a replacement for another object, and that the
1573 Replaced Unique Identifier field is present and contains the identification of the replaced object.
1574The Attribute field contains one or more attributes that the server is sending along with the object. The
1575server mayMAY include attributes with the object to specify how the object is to be used by the client. The
1576server mayMAY include a Lease Time attribute that grants a lease to the client.
1577If the Managed Object is a wrapped key, then the key wrapping specification shallSHALL be exchanged
1578prior to the transfer via out-of-band mechanisms.
Message Payload
Object Required Description
Unique Identifier Yes The Unique Identifier of the object.
Put Function Yes Indicates function for Put message.
Replaced Unique Identifier No Unique Identifier of the replaced
object. ShallSHALL be present if the
Put Function is Replace.
Certificate, Symmetric Key, Private Yes The object being sent to the client.
Key, Public Key, Split Key,
Template, Secret Data, or Opaque
Object
Attribute No, May The additional attributes that the
be server wishes to send with the
repeated object.
5.1
1587Protocol Version
1588This field contains the version number of the protocol, ensuring that the protocol is fully understood by
1589both communicating parties. The version number is specified in two parts, major and minor. Servers and
1590clients shallSHALL support backward compatibility with versions of the protocol with the same major
1591version. Support for backward compatibility with different major versions is optional.
5.2
1593Operation
1594This field indicates the operation being requested or the operation for which the response is being
1595returned. The operations are defined in Sections 3and 4.
5.3
1597Maximum Response Size
1598This field is optionally contained in a request message, and is used to indicate the maximum size of a
1599response that the requester is able toSHALL handle. It SHOULD onlyneed only be sent in requests that
1600maypossibly return large replies.
5.4
1602Unique Batch Item ID
1603This field is optionally contained in a request, and is used for correlation between requests and
1604responses. If a request has a Unique Batch Item ID, then responses to that request shallSHALL have the
1605same Unique Batch Item ID.
5.5
1607Time Stamp
1608This field is optionally contained in a request, is required in a response, is used for time stamping, and
1609mayMAY be used to enforce reasonable time usage at a client (e.g., a server mayMAY choose to reject a
1610request if a client's time stamp contains a value that is too far off the known correct time). Note: the time
1611stamp mayMAY be used by a client that has no real-time clock but has a countdown timer, to obtain
1612useful “seconds from now” values from all of the Date attributes by performing a subtraction.
229kmip-1.0-spec-ed-0.98 3 September 2009
230Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 77 of 135
Object Encoding Required
Time Stamp Date-Time No
5.6
1614Authentication
1615This is used to authenticate the requester. It is an optional information item, depending on the type of
1616request being issued and on server policies. Servers mayMAY require authentication on no requests, a
1617subset of the requests, or all requests, depending on policy. Query operations used to interrogate server
1618features and functions should notSHOULD NOT require authentication.
1619The authentication mechanisms are described and discussed in Section 7.
5.7
1622Asynchronous Indicator
1623This booleanBoolean flag indicates whether the client is able to accept an asynchronous response. It
1624shallSHALL have the booleanBoolean value True if the client is able to handle asynchronous responses,
1625and the value False otherwise. If not present in a request, then False is assumed. If a client indicates that
1626it is not able to handle asynchronous responses (i.e., flag is set to False), and the server is not able to
1627process the request synchronously, then the server shallSHALL respond to the request with a failure.
5.8
1629Asynchronous Correlation Value
1630This is returned in the immediate response to an operation that requires asynchronous polling. Note: the
1631server decides which operations are performed synchronously or asynchronously. A server-generated
1632correlation value shallSHALL be specified in any subsequent Poll or Cancel operations that pertain to the
1633original operation.
5.9
1635Result Status
1636This is sent in a response message and indicates the success or failure of a request. The following values
1637mayMAY be set in this field:
1638 Success – The requested operation completed successfully.
5.10
1646Result Reason
1647This field indicates a reason for failure or a modifier for a partially successful operation and shallSHALL
1648be present in responses that return a Result Status of Failure. It is optional in any response that returns a
1649Result Status of Success. The following defined values mayMAY be set in this field:
1650 Item not found – A requested object was not found or did not exist.
1651 Response too large – The response to a request would exceed the Maximum Response Size in
1652 the request.
1653 Authentication not successful – The authentication information in the request was not able to be
1654 validated, or there was no authentication information in the request when there shouldSHOULD
1655 have been.
1656 Invalid message – The request message was not understood by the server.
1657 Operation not supported – The operation requested by the request message is not supported by
1658 the server.
1659 Missing data – The operation requires additional optional information in the request, which was
1660 not present.
1661 Invalid field – Some data item in the request has an invalid value.
1662 Feature not supported – An optional feature specified in the request is not supported.
1663 Operation canceled by requester – The operation was asynchronous, and the operation was
1664 canceled by the Cancel operation before it completed successfully.
1665 Cryptographic failure – The operation failed due to a cryptographic error.
1666 Illegal operation – The client requested an operation that was not able to be performed with the
1667 specified parameters.
1668 Permission denied – The client does not have permission to perform the requested operation.
1669 Object archived – The object needs toSHALL be recovered from the archive before the
1670 performing the operation is able to be performed.
1671 General failure – The request failed for a reason other than the defined reasons above.
5.12
1677Batch Order Option
1678A Boolean value used in requests where the Batch Count is greater than 1. If True, then batched
1679operations shallSHALL be executed in the order in which they appear within the request. If False, then the
1680server mayMAY choose to execute the batched operations in any order. If not specified, then False is
1681assumed (i.e., no implied ordering). Server support for this feature is optional, but if the server does not
1682support the feature, and a request is received with the batch order option set to True, then the entire
1683request shallSHALL be rejected.
5.13
1685Batch Error Continuation Option
1686This option shallSHALL only be present if the Batch Count is greater than 1. This option shallSHALL have
1687one of three values:
1688 Undo – If any operation in the request fails, then the server shallSHALL undo all the previous
1689 operations.
1690 Stop – If an operation fails, then the server shall notSHALL NOT continue processing subsequent
1691 operations in the request. Completed operations shall notSHALL NOT be undone.
1692 Continue – Return an error for the failed operation, and continue processing subsequent
1693 operations in the request.
1694If not specified, then Stop is assumed.
1695Server support for this feature is optional, but if the server does not support the feature, and a request is
1696received containing the Batch Error Continuation option with a value other than the default Stop, then the
1697entire request shallSHALL be rejected.
1698 Table 171: Batch Error Continuation Option in Message Request Header
5.14
1699Batch Count
1700This field contains the number of Batch Items in a message and is required. If only a single operation is
1701being requested, then the batch count shallSHALL be set to 1. The Message Payload, which follows the
1702Message Header, contains one or more batch items.
5.15
1704Batch Item
1705This field consists of a structure that holds the individual requests or responses in a batch, and is
1706required. The contents of the batch items areis described in Sections 6.2and 6.3.
5.16
1708Message Extension
1709The Message Extension is an optional structure that mayMAY be appended to any Batch Item. It is used
1710to extend protocol messages for the purpose of adding vendor specified extensions. The Message
1711Extension is a structure containing a Vendor Identification, a Criticality Indicator, and vendor-specific
1712extensions. The Vendor Identification shallSHALL be a text string that uniquely identifies the vendor,
1713allowing a client to determine if it is able to parse and understand the extension is able to be parsed and
1714understood. If a client or server receives a protocol message containing a message extension that it does
1715not understand, then its actions depend on the Criticality Indicator. If the indicator is True (i.e., Critical),
1716and the receiver does not understand the extension, then the receiver shallSHALL reject the entire
1717message. If the indicator is False (i.e., Non-Critical), and the receiver does not understand the extension,
1718then the receiver mayMAY process the rest of the message as if the extension were not present.
6.11722Message Structure
Object Encoding Required
Request Message Structure Yes
Request Header Structure Yes
Batch Item Structure Yes, May be repeated
6.3
1730Asynchronous Operations
1731If the client is capable of accepting asynchronous responses, then it mayMAY set the Asynchronous
1732Indicator in the header of a batched request. The batched responses mayMAY contain a mixture of
1733synchronous and asynchronous responses.
17387 Authentication
1739The mechanisms used to authenticate the client to the server and the server to the client are not part of
1740the message definitions, and are external to the protocol. The Authentication field contained in Request
250kmip-1.0-spec-ed-0.98 3 September 2009
251Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 84 of 135
1741Headers is used to identify the client and to provide linkage between this identification and the external
1742authentication mechanism.
1743The Usage Guide describes authentication profiles appropriate to this protocol, as well as the relationship
1744of those mechanisms to the credentials that are optionally included in the Authentication field. The
1745authentication profiles described are:
1746 SSL/TLS authentication. If the transport protocol uses a normal TCP stream, then that stream
1747 shouldSHOULD use an SSL/TLS encryption layer, and the client and server authentication
1748 features shallSHALL be enabled unless otherwise specified in the operation. The Credential
1749 object contained in the Authentication field in all request messages shallSHALL contain the
1750 client's certificate. The server shouldSHOULD use this certificate to identify the client for policy
1751 enforcement purposes, and shouldSHOULD verify that this certificate matches the one used for
1752 SSL/TLS authentication.
1753 HTTPS authentication. If the transport protocol is HTTP over TCP, then the HTTPS protocol
1754 shouldSHOULD be used, and the client and server authentication features enabled unless
1755 otherwise specified in the operation. The contents and use of the Credential object are the same
1756 as in the case of SSL/TLS above.
1757All server implementations shouldSHOULD, at a minimum, support the SSL/TLS and HTTPS profiles
1758described in the Usage Guide.
1759Other mechanisms (e.g., Kerberos) are potentially usable, with the identity established in the mechanism
1760(e.g., the Kerberos token), expressed as the Credential object. Profiles for these mechanisms are not
1761currently described in the Usage Guide.
8.1
1765TTLV Encoding
1766In order to minimize the resource impact on potentially low-function clients, one encoding mechanism to
1767be used for protocol messages is a simplified TTLV (Tag, Type, Length, Value) scheme.
1768The scheme is designed to minimize the CPU cycle and memory requirements of clients that need to
1769encode or decode protocol messages, and to provide optimal alignment for both 32-bit and 64-bit
1770processors. Minimizing bandwidth over the transport mechanism is considered to be of lesser importance.
Structure 01
Integer 02
Long Integer 03
Big Integer 04
Enumeration 05
Boolean 06
Text String 07
Octet String 08
Date-Time 09
Interval 0A
Integer 4
Long Integer 8
Enumeration 4
Boolean 8
Date-Time 8
Interval 4
18268.1.2 Examples
1827These examples are assumed to be encoding a Protocol Object whose tag is 420020. The examples are
1828shown as a sequence of bytes in hexadecimal notation:
1829 An Integer containing the decimal value 8:
1830 42 00 20 | 02 | 00 00 00 04 | 00 00 00 08 00 00 00 00
1831 A Long Integer containing the decimal value 123456789000000000:
1832 42 00 20 | 03 | 00 00 00 08 | 01 B6 9B 4B A5 74 92 00
1833 A Big Integer containing the decimal value 1234567890000000000000000000:
259kmip-1.0-spec-ed-0.98 3 September 2009
260Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 87 of 135
1834 42 00 20 | 04 | 00 00 00 10 | 00 00 00 00 03 FD 35 EB 6B C2 DF 46 18 08 00 00
1835 An Enumeration with value 255:
1836 42 00 20 | 05 | 00 00 00 04 | 00 00 00 FF 00 00 00 00
1837 A Boolean with the value True:
1838 42 00 20 | 06 | 00 00 00 08 | 00 00 00 00 00 00 00 01
1839 A Text String:
1840 42 00 20 | 07 | 00 00 00 0B | 48 65 6C 6C 6F 20 57 6F 72 6C 64 00 00 00 00 00
1841 An Octet String:
1842 42 00 20 | 08 | 00 00 00 03 | 01 02 03 00 00 00 00 00
1843 A Date-Time, containing the value for Friday, March 14, 2008, 11:56:40 GMT:
1844 42 00 20 | 09 | 00 00 00 08 | 00 00 00 00 47 DA 67 F8
1845 An Interval, containing the value for 10 days:
1846 42 00 20 | 0A | 00 00 00 04 | 00 0D 2F 00 00 00 00 00
1847 A Structure containing an Enumeration, value 254, followed by an Integer, value 255, having tags
1848 420004 and 420005 respectively:
1849 42 00 20 | 01 | 00 00 00 20 | 42 00 04 | 05 | 00 00 00 04 | 00 00 00 FE 00 00 00 00| 42 00 05 | 02 | 00 00 00
1850 04 | 00 00 00 FF 00 00 00 00
18558.1.3.1 Tags
1856The following table defines the tag values for the objects and primitive data values for the protocol
1857messages.
Tag
Object Tag Value
(Unused) 000000 - 420000
Activation Date 420001
Application IdentifierData 420002
Application Names Space 420003
Application Specific 420004
IdentificationInformation
Archive Date 420005
Asynchronous Correlation 420006
Value
Asynchronous Indicator 420007
Attribute 420008
Attribute Index 420009
Credential Type
Name Value
Username & Password 00000001
Token 00000002
Biometric Measurement 00000003
Certificate 00000004
Extensions 8XXXXXXX
Wrapping Method
Name Value
Encrypt 00000001
MAC/sign 00000002
Encrypt then MAC/sign 00000003
MAC/sign then encrypt 00000004
TR-31 00000005
Extensions 8XXXXXXX
1869 Table 191: Recommended Curve Enumeration for ECDSA and ECDH
Certificate Type
Name Value
X.509 00000001
PGP 00000002
Extensions 8XXXXXXX
Name Type
Name Value
Uninterpreted Text String 00000001
URI 00000002
Extensions 8XXXXXXX
Object Type
Name Value
Certificate 00000001
Symmetric Key 00000002
Public Key 00000003
Private Key 00000004
Split Key 00000005
Template 00000006
Secret Data 00000007
Opaque Object 00000008
Extensions 8XXXXXXX
Cryptographic Algorithm
Name Value
DES 00000001
3DES 00000002
AES 00000003
RSA 00000004
DSA 00000005
ECDSA 00000006
HMAC-SHA1 00000007
HMAC-SHA256 00000008
HMAC-SHA512 00000009
HMAC-MD5 0000000A
DH 0000000B
ECDH 0000000C
Extensions 8XXXXXXX
Padding Method
Name Value
None 00000001
OAEP 00000002
PKCS5 00000003
SSL3 00000004
Zeros 00000005
ANSI X9.23 00000006
ISO 10126 00000007
PKCS1 v1.5 00000008
X9.31 00000009
PSS 0000000A
Extensions 8XXXXXXX
Hashing Algorithm
Name Value
MD2 00000001
MD4 00000002
MD5 00000003
SHA-1 00000004
SHA-256 00000005
SHA-384 00000006
SHA-512 00000007
SHA-224 00000008
Extensions 8XXXXXXX
State
Name Value
Pre-Active 00000001
Active 00000002
Deactivated 00000003
Compromised 00000004
Destroyed 00000005
Destroyed Compromised 00000006
298kmip-1.0-spec-ed-0.98 3 September 2009
299Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 100 of 135
Extensions 8XXXXXXX
Superseded 00000004
Link Type
Name Value
Certificate Link 00000101
Public Key Link 00000102
Private Key Link 00000103
Derivation Base Object Link 00000104
Derived Key Link 00000105
Replacement Object Link 00000106
Replaced Object Link 00000107
Extensions 8XXXXXXX
Derivation Method
Name Value
PBKDF2 00000001
HASH 00000002
HMAC 00000003
ENCRYPT 00000004
NIST800-108-C 00000005
NIST800-108-F 00000006
NIST800-108-DPI 00000007
Extensions 8XXXXXXX
Validity Indicator
Name Value
Valid 00000001
Invalid 00000002
Unknown 00000003
Extensions 8XXXXXXX
Query Function
Name Value
Query Operations 00000001
Query Objects 00000002
Query Server Information 00000003
Query Application Namespaces 00000004
Cancellation Result
Name Value
Canceled 00000001
Unable to Cancel 00000002
Completed 00000003
Failed 00000004
Unavailable 00000005
Extensions 8XXXXXXX
Put Function
Name Value
New 00000001
Replace 00000002
Extensions 8XXXXXXX
Operation
Name Value
Create 00000001
Create Key Pair 00000002
Register 00000003
Re-key 00000004
Derive Key 00000005
Certify 00000006
Re-certify 00000007
Locate 00000008
Check 00000009
Get 0000000A
Get Attributes 0000000B
Get Attribute List 0000000C
Add Attribute 0000000D
Modify Attribute 0000000E
Delete Attribute 0000000F
Obtain Lease 00000010
Get Usage Allocation 00000011
Activate 00000012
Revoke 00000013
Destroy 00000014
Archive 00000015
Recover 00000016
Validate 00000017
Query 00000018
Cancel 00000019
Poll 0000001A
Notify 0000001B
Put 0000001C
Extensions 8XXXXXXX
Result Status
Name Value
Success 00000000
Operation Failed 00000001
Operation Pending 00000002
Operation Undone 00000003
Extensions 8XXXXXXX
Result Reason
Name Value
Item Not Found 00000001
Response Too Large 00000002
Authentication Not Successful 00000003
Invalid Message 00000004
Operation Not Supported 00000005
Missing Data 00000006
Invalid Field 00000007
Feature Not Supported 00000008
Operation Canceled By 00000009
Requester
Cryptographic Failure 0000000A
Illegal Operation 0000000B
Permission Denied 0000000C
Object archived 0000000D
Index Out of Bounds 0000000E
General Failure 00000100
Extensions 8XXXXXXX
8.2
1928XML Encoding
1929An XML Encoding has not yet been defined.
19309 Transport
1931Transport protocols are not part of the message definitions, and are external to this protocol. The Usage
1932Guide, however, describes two profiles for implementation of this protocol over secure transport protocols,
1933namely:
1934 SSL/TLS over TCP. This profile describes the implementation of this protocol using SSL/TLS
1935 encryption, with client and server authentication features enabled, over a normal TCP stream.
1936 HTTPS over TCP. This profile describes the implementation of this protocol using HTTPS, with
1937 client and server authentication features enabled, over a normal TCP stream.
1938To ensure a base level of interoperability, all server implementations shouldSHOULD, at least, support
1939the SSL/TLS and HTTPS transport protocols as described in the Usage Guide.
194010Error Handling
1941This section details the specific Result Reasons that shouldSHOULD be returned for errors detected.
1942Note that this is not an exhaustive list of possible errors for each operation (allowing other Result
1943Reasons to be returned if an implementation needs to do so).
10.1
1944General
1945These errors mayMAY occur when any protocol message is received by the server.
10.2
1947Create
Error Definition Result Status Result Reason
Object Type is not recognized Operation Failed Invalid Field
Templates that do not exist are given Operation Failed Item Not Found
in request
Incorrect attribute value(s) specified Operation Failed Invalid Field
(e.g., initial date 5 years ago)
Error creating cryptographic object Operation Failed Cryptographic Failure
(e.g., key material generation issue)
Trying to set more instances than the Operation Failed Index Out of Bounds
server supports of an attribute that is
able toMAY have multiple instances
10.3
1949Create Key Pair
Error Definition Result Status Result Reason
Templates that do not exist are given Operation Failed Item Not Found
in request
Incorrect attribute value(s) specified Operation Failed Invalid Field
Error creating cryptographic object Operation Failed Cryptographic Failure
(e.g., key material generation issue)
Trying to create a new object with the Operation Failed Invalid Field
same Name attribute value as an
existing object
Trying to set more instances than the Operation Failed Index Out of Bounds
server supports of an attribute that is
able toMAY have multiple instances
Required field(s) missing Operation Failed Invalid Message
The particular Application Namespace Operation Failed Application Namespace
is not supported and Application Data Not Supported
cannot be generated if it was omitted
from the client request
Template object is archived Operation Failed Object Aarchived
10.5
1953Re-key
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object specified is not able to be re- Operation Failed Permission Denied
keyed (e.g., not a symmetric key, or the
permissions do not allow it)
Offset field is not permitted to be Operation Failed Invalid Message
specified at the same time as any of the
Activation Date, Process Start Date,
Protect Stop Date, or Deactivation Date
attributes
Cryptographic error during re-key Operation Failed Cryptographic Failure
The particular Application Namespace Operation Failed Application Namespace Not
is not supported and Application Data Supported
cannot be generated if it was omitted
from the client request
Object is archived Operation Failed Object Aarchived
10.7
1957Certify
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object specified is not able to be Operation Failed Permission Denied
certified (e.g., not a public key or the
permissions do not allow it)
The Certificate Request does not Operation Failed Invalid Field
contain a signed certificate request of
the specified Certificate Request Type
Server does not support operation Operation Failed Operation Not Supported
The particular Application Namespace Operation Failed Application Namespace
is not supported and Application Data Not Supported
10.8
1959Re-certify
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object specified is not able to be Operation Failed Permission Denied
certified (e.g., not a certificate or the
permissions do not allow it)
The Certificate Request does not Operation Failed Invalid Field
contain a signed certificate request of
the specified Certificate Request Type
Server does not support operation Operation Failed Operation Not Supported
Offset field is not permitted to be Operation Failed Invalid Message
specified at the same time as any of
the Activation Date or Deactivation
Date attributes
The particular Application Namespace Operation Failed Application Namespace
is not supported and Application Data Not Supported
cannot be generated if it was omitted
from the client request
Object is archived Operation Failed Object Aarchived
10.9
1961Locate
Error Definition Result Status Result Reason
Non-existing attributes, attributes that Operation Failed Invalid Field
the server does not understand or
templates that do not exist are given in
request
10.10Check
1963
Error Definition Result Status Result Reason
Object does not exist Operation Failed Item Not Found
Object is archived Operation Failed Object Aarchived
10.12Get
1967 Attributes
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
An Attribute Index is specified but no Operation Failed Item Not Found
matching instance exists.
Object is archived Operation Failed Object Aarchived
10.13Get
1969 Attribute List
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object is archived Operation Failed Object Aarchived
10.14Add
1971 Attribute
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Attempt to add read-only attribute Operation Failed Permission Denied
The specified attribute already exists Operation Failed Illegal Operation
New attribute contains Attribute Index Operation Failed Invalid Field
Trying to add a Name attribute with the Operation Failed Illegal Operation
same value that another object already
has
Trying to add a new instance to an Operation Failed Index Out of Bounds
attribute with multiple instances but the
server limit on instances is reached
The particular Application Namespace Operation Failed Application Namespace Not
is not supported and Application Data Supported
cannot be generated if it was omitted
from the client request
Object is archived Operation Failed Object Aarchived
10.15Modify
1973 Attribute
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
A specified attribute does not exist (i.e., Operation Failed Invalid Field
it needs to first be added)
An Attribute Index is specified, but no Operation Failed Item Not Found
matching instance exists.
The specified attribute is read-only Operation Failed Permission Denied
Trying to set the Name attribute value Operation Failed Illegal Operation
to a value already used by another
object
The particular Application Namespace Operation Failed Application Namespace
is not supported and Application Data Not Supported
cannot be generated if it was omitted
from the client request
Object is archived Operation Failed Object aArchived
10.17Obtain
1977 Lease
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
The server determines that a new lease Operation Failed Permission Denied
is not permitted to be issued for the
specified cryptographic object
Object is archived Operation Failed Object aArchived
10.18Get
1979 Usage Allocation
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object has no Usage Limits attribute or Operation Failed Illegal Operation
object is not able to be used for
protection purposes
Both Usage Limits Byte Count and Operation Failed Invalid Message
Usage Limits Object Count fields are
specified
Neither Byte Count or Object Count is Operation Failed Invalid Message
specified
A usage type (Byte Count or Object Operation Failed Operation Not Supported
Count) is specified in the request, but
the usage allocation for the object
mayMAY only be given for the other
type
343kmip-1.0-spec-ed-0.98 3 September 2009
344Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 115 of 135
Object is archived Operation Failed Object aArchived
10.19Activate
1981
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Unique Identifier specifies template or Operation Failed Illegal Operation
other object that is not able to be
activated
Object is not in Pre-Active state Operation Failed Permission Denied
Object is archived Operation Failed Object aArchived
10.20Revoke
1983
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Revocation Reason is not recognized Operation Failed Invalid Field
Unique Identifier specifies template or Operation Failed Illegal Operation
other object that is not able to be
revoked
Object is archived Operation Failed Object aArchived
10.21Destroy
1985
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
Object exists, but has already been Operation Failed Permission Denied
destroyed
Object is not in Deactivated state Operation Failed Permission Denied
Object is archived Operation Failed Object aArchived
10.23Recover
1989
Error Definition Result Status Result Reason
No object with the specified Unique Operation Failed Item Not Found
Identifier exists
10.24Validate
1991
Error Definition Result Status Result Reason
10.25Query
1993
1994N/A
10.26Cancel
1995
1996N/A
10.27Poll
1997
Error Definition Result Status Result Reason
No outstanding operation with the Operation Failed Item Not Found
specified Asynchronous Correlation
Value exists
10.28Batch
1999 Items
2000These errors mayMAY occur when a protocol message with one or more batch items is processed by the
2001server. If a message with one or more batch items was parsed correctly, then the response message
2002shouldSHOULD include response(s) to the batch item(s) in the request according to the table below.
2003
200712Attribute Cross-reference
2008The following table of Attribute names indicates the Managed Object(s) for which each attribute applies.
2009This table is not normative.
Private Key
Template
Certificate
Public Key
Split Key
Secret Data
Opaque Object
Unique Identifier x x x x x x x x
Name x x x x x x x x
Object Type x x x x x x x x
Cryptographic Algorithm x x x x x x
Cryptographic Length x x x x x x
Cryptographic Parameters x x x x x x
Certificate Type x
Certificate Issuer x
Certificate Subject x
Digest x x x x x x
352kmip-1.0-spec-ed-0.98 3 September 2009
353Copyright © OASIS® 2009. All Rights Reserved. OASIS trademark, IPR and other policies apply. Page 118 of 135
Attribute Name Managed Object
Operation Policy Name x x x x x x x x
Cryptographic Usage Mask x x x x x x x
Lease Time x x x x x x x
Usage Limits x x x x x
State x x x x x x
Initial Date x x x x x x x x
Activation Date x x x x x x x
Process Start Date x x x
Protect Stop Date x x x
Deactivation Date x x x x x x x x
Destroy Date x x x x x x x
Compromise Occurrence Date x x x x x x x
Compromise Date x x x x x x x
Revocation Reason x x x x x x x
Archive Date x x x x x x x x
Object Group x x x x x x x x
Link x x x x x x
Application Specific IdentificationInformation x x x x x x x x
Contact Information x x x x x x x x
Last Changed Date x x x x x x x x
Custom Attribute x x x x x x x x
ed-0.98 2009-04-24 Robert Haas Initial conversion of input document to OASIS format
together with clarifications.
ed-0.98 2009-05-21 Robert Haas Changes to TTLV format for 64-bit alignment. Appendices
indicated as non normative.
ed-0.98 2009-06-25 Robert Haas, Multiple editorial and technical changes, including merge
Indra Fitzgerald of Template and Policy Template.
ed-0.98 2009-07-23 Robert Haas, Multiple editorial and technical changes, mainly based on
Indra Fitzgerald comments from Elaine Barker and Judy Furlong. Fix of
Template Name.
ed-0.98 2009-08-27 Robert Haas Wording compliance changes according to RFC2119 from
Rod Wideman. Removal of attribute mutation in server
responses.