XKMS Assertions and Test Collection

Editors Copy 16 July 2004

This version:
http://www.w3.org/2001/XKMS/Drafts/test-suite/CR-XKMS-test-suite-20040716.html/
Editor:
Guillermo Alvaro, Trinity College Dublin

Abstract

This document draws on assertions found in the XML Key Management specifications [XKMS Part1], [XKMS Part2], and provides a set of tests in order to show whether the assertions are implemented in a XKMS client/server.

Status of this Document

This document is an editors' copy that has no official standing.


Short Table of Contents

1. Introduction
2. XKMS Assertions
3. XKMS Test Collection
4. References


Table of Contents

1. Introduction
2. XKMS Assertions
    2.1 XKMS, Part 1 Assertions
    2.2 XKMS, Part 2 Assertions
3. XKMS Test Collection
    3.1 Introduction
    3.2 Tests
4. References
    4.1 Normative References


1. Introduction

This document draws on assertions found in the XKMS specifications, and provides a set of tests in order to show whether the assertions are implemented in a XKMS client/server.

2. XKMS Assertions

2.1 XKMS, Part 1 Assertions

Assertion XKMS_2_0_Paragraph_48-uriidentifiers

Location of the assertion

XKMS Part 1, Section 2.2

Text from the specification

The means by which the service specifies protocol options which it accepts is outside the scope of this document. If the mechanism used for this purpose uses URI based identifiers for this purpose the following identifiers SHOULD be used: Asynchronous Processing http://www.w3.org/2002/03/xkms#Asynchronous Two Phase Request Protocol http://www.w3.org/2002/03/xkms#Represent Compound Requests and Responses http://www.w3.org/2002/03/xkms#Compound

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_52-majorresultpending

Location of the assertion

XKMS Part 1, Section 2.4

Text from the specification

An XKMS service MUST NOT return the MajorResult code Pending unless the ResponseMechanism value Pending was specified in the corresponding request. If an XKMS service receives a request that cannot be processed synchronously and the ResponseMechanism value Pending is not specified the MajorResult code Receiver and MinorResult codeNotSynchronous are returned.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_56-respmechanismrequest

Location of the assertion

XKMS Part 1, Section 2.5.1

Text from the specification

Requestor generation of the Request Message - ResponseMechanism value Pending MUST be specified

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_64-majorresultrepresent

Location of the assertion

XKMS Part 1, Section 2.6

Text from the specification

An XKMS service MUST NOT return the MajorResult code Represent unless the ResponseMechanism value Represent was specified in the corresponding request. If an XKMS service requires the use of the Two Phase Request protocol and the ResponseMechanism value Represent is not specified in the corresponding request the MajorResult code Sender and MinorResult codeRepresentRequiredare returned.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_66-noncerecent

Location of the assertion

XKMS Part 1, Section 2.6

Text from the specification

The service SHOULD verify that the nonce value specified in a second phase request was recently generated by the service. The service MAY verify that the nonce value has not been previously responded to.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_67-respmechanismphase1

Location of the assertion

XKMS Part 1, Section 2.6.1

Text from the specification

Requestor generation of the Phase 1 Request Message - ResponseMechanism value Represent MUST be specified

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_78-outersuccess

Location of the assertion

XKMS Part 1, Section 2.8

Text from the specification

If the ResultMajor value of the outer response is Success the compound response SHOULD contain an inner response response element corresponding to each inner request element of the compound request. If the the ResultMajor value of the outer response is not Success the response MUST NOT contain any inner responses. If a compound response has an outer ResultMajor value Success but does not contain a response corresponding to an inner request the ResultMajor value failure is assumed for that inner request.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_86-emptyidentifier

Location of the assertion

XKMS Part 1, Section 3.1.1

Text from the specification

The scope of the signature is the entire request message (i.e. the element derrived from MessageAbstractType) and is specified using a reference to the Id attribute specified in the MessageAbstractType abstract type. The empty identifier "" MUST NOT be used.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_86-opaqueclientdata

Location of the assertion

XKMS Part 1, Section 3.1.1

Text from the specification

Data specified by the client that is opaque to the service. An XKMS service SHOULD return the value of the <OpaqueClientData> element unmodified in a request in a response with status code Success.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_89-signvalidation

Location of the assertion

XKMS Part 1, Section 3.1.2

Text from the specification

Validation of XML Signatures MUST be done independent of any ancestral XML context of the message. This may be achieved by: Isolating the XKMS message from any 'wrapper' (eg. SOAP) before validation, or; Specifying a canonicalization algorithm, such as Exclusive XML Canonicalization, in <SignedInfo>:<CanonicalizationMethod> to exclude ancestral XML context during the validation of the message. For interoperability purposes XKMS implementations MUST support the use of Exclusive XML Canonicalization.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_97-respmechanismpending

Location of the assertion

XKMS Part 1, Section 3.2.1

Text from the specification

If the <PendingNotification> element is present the value Pending MUST be specified as a <ResponseMechanism> value.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_103-requesteddata

Location of the assertion

XKMS Part 1, Section 3.2.3

Text from the specification

The Service SHOULD return a requested data element if it is available. The Service MAY return additional data elements that were not requested. In particular, the service MAY return data elements specified in the request with the response.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_115-noncepresent

Location of the assertion

XKMS Part 1, Section 3.3.1

Text from the specification

If the MajorResult value has the value Represent the nonce attribute MUST be present and MUST NOT be the empty string.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_117-unpredictabledata

Location of the assertion

XKMS Part 1, Section 3.3.1

Text from the specification

Care must be taken when signing responses to ensure that the service does not provide a signing oracle, that is sign messages whose content is guessable by an attacker. Implementations MUST ensure that response messages contain a sufficient quantity of unpredictable data such as a pseudo-randomly chosen Id attribute.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_120-resultmajorrepresent

Location of the assertion

XKMS Part 1, Section 3.3.1.1

Text from the specification

Represent - Not Final - The service has not acted on the request. In order for the request to be acted upon the request MUST be represented with the specified nonce in accordance with the two phase protocol.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_124-reqsignvalueincluded

Location of the assertion

XKMS Part 1, Section 3.3.2

Text from the specification

A service SHOULD include the <RequestSignatureValue> element in a response if the following conditions are satisfied and MUST NOT include the value otherwise: The <ds:Signature> element was present in the corresponding request The service successfully verified the <ds:Signature> element in the corresponding request, and The ResponseMechanism RequestSignatureValue was specified.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_125-reqsignvaluerejection

Location of the assertion

XKMS Part 1, Section 3.3.2

Text from the specification

If the <RequestSignatureValue> element is present in a response the requestor MUST reject the message if either: The corresponding request was not authenticated, or: The value ds:Signature/ds:SignatureValue in the request does not match the value RequestSignatureValue in the response.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_160-trustworthylocate

Location of the assertion

XKMS Part 1, Section 4.3

Text from the specification

A Location service SHOULD attempt to provide only information which is trustworthy to the best of its knowledge but does not provide any assurance that it will do so. Information obtained from a Locate service SHOULD NOT be relied upon unless it is validated.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_173-uniquestableidentifier

Location of the assertion

XKMS Part 1, Section 5.1.1

Text from the specification

Clients MUST NOT rely on the key binding identifier being either unique or stable. In the case that an XKMS service is providing an interface to an underlying PKI, clients MUST NOT rely on the service choosing key binding identifiers that are either the same as or bear a systematic relationship to the serial numbers or other identifiers of the corresponding credentials in the underlying PKI.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_176-keyusageignored

Location of the assertion

XKMS Part 1, Section 5.1.2

Text from the specification

If a key usage is specified in a KeyBinding that the cryptographic algorithm associated with the key does not support the element MUST be ignored. If a key usage is specified in a QueryKeyBinding however the key usage forms part of the criteria the service should attempt to match.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_183-discsupport

Location of the assertion

XKMS Part 1, Section 5.1.3

Text from the specification

An XKMS service SHOULD support discovery of the supported security profiles and corresponding key bindings by means of a Locate operation that specifies the XKMS application URI and the URL of the service role. Note that as with any other Locate operation the credentials returned by this mechanism SHOULD only be considered trustworthy if validated according to the trust policy of the client.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_185-ukwforward

Location of the assertion

XKMS Part 1, Section 5.1.3

Text from the specification

Applications SHOULD NOT forward <UseKeyWith> elements returned in a Locate result in a subsequent Validate query.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_192-datefullyspecified

Location of the assertion

XKMS Part 1, Section 5.1.5

Text from the specification

All dateTime values MUST fully specify the date.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_195-leapseconds

Location of the assertion

XKMS Part 1, Section 5.1.5

Text from the specification

Implementations MUST NOT generate time instances that specify leap seconds.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_206-consistentreasoncodes

Location of the assertion

XKMS Part 1, Section 5.1.7

Text from the specification

If reason codes are specifiedStatusValue attribute MUST be consistent with the reason codes specified as follows: If an <InvalidReason> code is present the StatusValue attibute MUST have the value Invalid If an <IndeterminateReason> code is present the StatusValue attibute MUST have the either the value Indeterminate or the value Invalid. If neither an <InvalidReason> nor an <IndeterminateReason> code is present the StatusValue attibute MAY have any defined value, i.e. Valid, Indeterminate or Invalid.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_259-dataobjectrevocation

Location of the assertion

XKMS Part 1, Section 6.3

Text from the specification

If an XKMS key binding is bound to a data object in an underlying PKI the revocation of the key binding SHOULD result in the revocation of the underlying data object. For example if the XKMS key binding is bound to an X.509 certificate the revocation of the key binding SHOULD result in revocation of the underlying certificate.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_263-keyprevescrowed

Location of the assertion

XKMS Part 1, Section 6.4

Text from the specification

A Registration service MAY support key recovery. For key recovery to be possible the private key to be recovered MUST have been previously escrowed with the recovery service, for example by means of the XKRSS registration of a server generated key.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_264-asynchkeyrecovery

Location of the assertion

XKMS Part 1, Section 6.4

Text from the specification

Clients supporting key recovery SHOULD support asynchronous processing.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_271-authrequests

Location of the assertion

XKMS Part 1, Section 6.5

Text from the specification

An X-KRSS Service SHOULD ensure that all requests are authentic and authorized.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_276-proofofpossessionrequired

Location of the assertion

XKMS Part 1, Section 6.5

Text from the specification

Services SHOULD require that clients demonstrate Proof of Possession of the private key components of a public key if a request is made to register a valid key binding bound to that public key.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_277-proofofpossessionforrevocation

Location of the assertion

XKMS Part 1, Section 6.5

Text from the specification

Services SHOULD accept Proof of Possession of the private key component of a public key to effect revocation of any key binding bound to that key.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_298-notboundauthcircumstances

Location of the assertion

XKMS Part 1, Section 7.1.5

Text from the specification

The authentication data is not securely bound to the request and thus the element [NotBoundAuthentication] MUST NOT be employed except in circumstances where the message or transport protocol provides adequate protection of both confidentiality and integrity.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_21-namespace

Location of the assertion

XKMS Part 1, Section 1.4

Text from the specification

The XML namespace [XML-ns] URI that MUST be used by implementations of this (dated) specification is: http://www.w3.org/2002/03/xkms#

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_22-internalentities

Location of the assertion

XKMS Part 1, Section 1.4

Text from the specification

While applications MUST support XML and XML namespaces, the use of internal entities [XML] or the "xkms" XML namespace prefix and defaulting/scoping conventions are OPTIONAL; we use these facilities to provide compact and readable examples.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_330-entropy

Location of the assertion

XKMS Part 1, Section 8.1

Text from the specification

Applications MUST ensure that the limited use shared secret data contains sufficient entropy to prevent dictionary attacks.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_345-willbeacepted

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

A sender SHOULD NOT send a message unless it is known that it will be accepted by the recipient.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-owncredentialretrieval

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Services SHOULD support retrieval of their own credential by means of the Locate operation with the XKMS protocol URI.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-oneatleast

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

A conforming XKMS service MUST support at least one XKMS operation, that is there MUST be at least one possible input that results in the result Success.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-statusifasynchandcompound

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Services SHOULD support status operations if asynchronous processing and compound requests are also supported

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-accesptvalidrequests

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

A conforming XKMS service MUST accept any valid XKMS request sent to it and be capable of responding to the request with a correctly formatted XKMS result. If a service does not support an operation it MUST respond to all requests for a particular operation with the result Sender.MessageNotSupported.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-inmediate

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

A conforming XKMS service MUST be capable of returning an immediate response to any XKMS request.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_353-asynchregisterreissuerecover

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Asynchronous Response for Register, Reissue, Recover: RECOMMENDED+: Processing of certain XKRSS operations may require manual intervention by an operator in certain circumstances. It is therefore recommended that clients support the use of asynchronous processing with these operations unless it is known that all requests will be serviced immediately.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-compoundoperations

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Services that support Compound Operations SHOULD support compound requests

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-pendingresponse

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

A client MAY offer asynchronous processing of Pending and Status operations however a service MUST NOT return a pending response.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-twophaseclientsupport

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Clients SHOULD support use of the two phase request protocol.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-httpservsupport

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Services MUST support the use of HTTP transport

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-soap12servsupport

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Services MUST support the use of SOAP 1.2 encapsulation

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-nosecuritylocate

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

No Security, Locate: REQUIRED

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-nosecurityothers

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

No Security, Others than Locate: RECOMMENDED

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-payloadauth

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

Payload Authentication I & II: RECOMMENDED

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-tlsbinding

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

TLS Binding I, II & III: RECOMMENDED

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_354-exclcanonicalization

Location of the assertion

XKMS Part 1, Section 9

Text from the specification

If XML Signature is used, Exclusive Canonicalization MUST be supported.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_356-previousresponse

Location of the assertion

XKMS Part 1, Section 10.1

Text from the specification

Implementations SHOULD ensure that replay of a previous XKMS response is not possible.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_359-denialofserviceattackprevention

Location of the assertion

XKMS Part 1, Section 10.2

Text from the specification

XKMS Services SHOULD take measures to prevent or mitigate denial of service attacks. In particular XKMS Services SHOULD NOT perform an unlimited number of resource intensive operations unless the request comes from an authenticated source.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_362-keycompromisedbyrecovery

Location of the assertion

XKMS Part 1, Section 10.3

Text from the specification

Services SHOULD carefully assess the extent to which a recovery operation compromises a private key and apply sufficient controls such as the revocation of the underlying key binding as appropriate.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_363-minimumentropy

Location of the assertion

XKMS Part 1, Section 10.4

Text from the specification

Applications SHOULD enforce the following minimum entropy values for the shared secret: Registration of Client Generated Key The shared secret SHOULD contain a minimum of 32 bits of entropy if the service implements measures to prevent guessing of the shared secret and a minimum of 128 bits of entropy otherwise. Registration of Service Generated Key The shared secret SHOULD have a minimum of 128 bits of entropy

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_364-confidentialopaquedata

Location of the assertion

XKMS Part 1, Section 10.5

Text from the specification

Clients SHOULD NOT send confidential or privacy sensitive data to an XKMS Service as Opaque Data unless it is encrypted such that it is not disclosed to the service.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_366-authdataconfidentiality

Location of the assertion

XKMS Part 1, Section 10.6

Text from the specification

If a service supports the use of authentication using the <NotBoundAuthentication> element, controls MUST be employed to ensure the confidentiality of the authentication data and to ensure that the <NotBoundAuthentication> is bound to the request.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_368-predictedresponse

Location of the assertion

XKMS Part 1, Section 10.7

Text from the specification

XKMS services that provide signed responses SHOULD ensure that the requestor cannot solicit a predicted response, thus providing a signing oracle.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_370-privacynotification

Location of the assertion

XKMS Part 1, Section 10.8

Text from the specification

An XKMS service MAY solicit data which is subject to privacy concerns. In certain circumstances management of such data MAY be subject to government regulation, corporate policies or contractual obligations. Deployments SHOULD consider whether the information they collect is subject to such concerns and if necessary deploy a privacy notification mechanism such as P3P [P3P].

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_371-encryptioninfoprotected

Location of the assertion

XKMS Part 1, Section 10.9

Text from the specification

Implementations MUST ensure that in cases where a private key is generated by the service, the information used to encrypt the private key data is adequately protected. In particular if an authentication pass phrase exchanged out of band is used to encrypt the private key the implementation MUST ensure that the out of band communication mechanism adequately protects the confidentiality of the pass phrase.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_373-confidentialinfocompromised

Location of the assertion

XKMS Part 1, Section 10.10

Text from the specification

In certain circumstances the length of an encrypted response MAY reveal information that is useful to an attacker. For example a short message might indicate that a request was refused. Deployments SHOULD consider whether such disclosures might result in compromise of confidential information

Comments

-

Tests

-

2.2 XKMS, Part 2 Assertions

Assertion XKMS_2_0_Paragraph_18-sensitiveinfo

Location of the assertion

XKMS Part 1, Section 2.1

Text from the specification

Confidentiality MAY be a requirement for an XKMS service. Deployments SHOULD consider the extent to which the content of XKMS messages reveal sensitive information. A confidentiality requirement MAY exist even if a service only provides information from public sources as the contents of a request might disclose information about the client.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_19-strongcipher

Location of the assertion

XKMS Part 2, Section 2.1

Text from the specification

A service that supports registration of server generated keys or Key Recovery MUST implement the use of XML Encryption with a strong cipher.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_20-confidentialitybyencryption

Location of the assertion

XKMS Part 2, Section 2.1

Text from the specification

An XKMS service SHOULD support Confidentiality by means of encryption.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_25-messagerequestauth

Location of the assertion

XKMS Part 2, Section 2.2

Text from the specification

An XKMS service SHOULD support Message Request Authentication.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_31-messagecorrelation

Location of the assertion

XKMS Part 2, Section 2.5

Text from the specification

An XKMS service MUST support a means of ensuring correct message correlation. That is the requestor must be assured that the response returned was made in response to the intended request sent to the service and not a modification of that request (Request Substitution attack) or a response to an earlier request (response replay attack).

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_32-responsecorrespondance

Location of the assertion

XKMS Part 2, Section 2.5

Text from the specification

In order to prevent response replay and request message substitution attacks the requestor SHOULD ensure that the response corresponds to the request.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_37-denialofserviceattackprotection

Location of the assertion

XKMS Part 2, Section 2.7

Text from the specification

An XKMS service SHOULD support protection against a Denial of Service attack.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_40-strongencryptionservergenkey

Location of the assertion

XKMS Part 2, Section 2.8

Text from the specification

If a Register service supports registration of server generated key pairs or key recovery strong encryption of the private key MUST be supported.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_40-initialregistrationauth

Location of the assertion

XKMS Part 2, Section 2.8

Text from the specification

XKMS Registration services SHOULD support the authentication of registration requests for initial registration of a key binding. Registration requests for secondary registration of previously issued credentials (i.e. a signed key binding or a digital certificate) MAY be permitted without authentication.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_40-initialregistrationpopverification

Location of the assertion

XKMS Part 2, Section 2.8

Text from the specification

XKMS Registration services SHOULD support the verification of Proof Of Possession in the initial registration of client generated keys.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_41-soapmessageprotocol

Location of the assertion

XKMS Part 2, Section 3

Text from the specification

XKMS implementers should support the SOAP message protocol for interoperability. When doing do, they MUST use the binding described herein.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_42-soap12support

Location of the assertion

XKMS Part 2, Section 3

Text from the specification

XKMS 2.0 implementations MUST support the use of SOAP 1.2. For near term compatibility with existing tools and infrastructure, SOAP 1.1 MAY be used

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_73-authenticatedtls

Location of the assertion

XKMS Part 2, Section 4.2

Text from the specification

When TLS is to be used in XKMS, XKMS responders MUST support server authenticated TLS.

Comments

-

Tests

-

Assertion XKMS_2_0_Paragraph_73-tlsrsawith3des

Location of the assertion

XKMS Part 2, Section 4.2

Text from the specification

All XKMS clients and responders which support TLS MUST support the TLS_RSA_WITH_3DES-EDE_CBC_SHA ciphersuite. Other ciphersuites MAY be supported, but weak ciphersuites intended to meet export restrictions ("export grade") are NOT RECOMMENDED to be supported.

Comments

-

Tests

-

3. XKMS Test Collection

3.1 Introduction

3.2 Tests

Test:T1

Description:

Locate: A client wishes to obtain an encryption key bound to bob@bobcorp.test, so it can be able to send an encrypted mail to Bob. The client secure email format is S/MIME. The processing mode is synchronous. The resulting set of messages will consist of a Locate Request to the server and the Locate Response returned.

Messages:

Message Request


<?xml version="1.0" encoding="utf-8"?>
<LocateRequest Id="..." Service="..." xmlns="http://www.w3.org/2002/03/xkms#">
  <RespondWith>KeyName</RespondWith>
  <RespondWith>KeyValue</RespondWith>
  <RespondWith>X509Cert</RespondWith>
  <RespondWith>X509Chain</RespondWith>
  <QueryKeyBinding>
    <KeyUsage>Encryption</KeyUsage>
    <UseKeyWith Application="urn:ietf:rfc:2633" Identifier="bob@bobcorp.test" />
  </QueryKeyBinding>
</LocateRequest>

 />
                

Message Response


<?xml version="1.0" encoding="utf-8"?>
<LocateResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      Id="..." Service="..." ResultMajor="Success" RequestId="..."
      xmlns="http://www.w3.org/2002/03/xkms#">
  <UnverifiedKeyBinding Id="...">
    <ds:KeyInfo>
      <ds:KeyValue>
        <ds:RSAKeyValue>
          <ds:Modulus>...</ds:Modulus>
          <ds:Exponent>...</ds:Exponent>
        </ds:RSAKeyValue>
      </ds:KeyValue>
      <ds:X509Data>
        <ds:X509Certificate>...</ds:X509Certificate>
        <ds:X509Certificate>...</ds:X509Certificate>
      </ds:X509Data>
    </ds:KeyInfo>
    <KeyUsage>Signature</KeyUsage>
    <KeyUsage>Encryption</KeyUsage>
    <KeyUsage>Exchange</KeyUsage>
    <UseKeyWith Application="urn:ietf:rfc:2633" Identifier="bob@bobcorp.test" />
  </UnverifiedKeyBinding>
</LocateResult>

 />
                

Test:T2

Description:

Validate: A client wishes to check whether a certificate supplied by a sender (Alice) in a message is valid or not, so he sends the certificate chain to the XKMS service. The processing mode is synchronous. The certificate is valid and it has not been revoked. The resulting set of messages will consist of a Validate Request to the server and the Validate Response returned reporting that the key binding has successfully been checked.

Messages:

Message Request


<?xml version="1.0" encoding="utf-8"?>
<ValidateRequest Id="..." Service="..." xmlns="http://www.w3.org/2002/03/xkms#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <RespondWith>X509Cert</RespondWith>
  <QueryKeyBinding>
    <ds:KeyInfo>
      <ds:X509Data>
        <ds:X509Certificate>...</ds:X509Certificate>
        <ds:X509Certificate>...</ds:X509Certificate>
      </ds:X509Data>
    </ds:KeyInfo>
    <KeyUsage>Signature</KeyUsage>
    <UseKeyWith Application="urn:ietf:rfc:2633" Identifier="alice@alicecorp.test" />
  </QueryKeyBinding>
</ValidateRequest>

 />
                

Message Response


<?xml version="1.0" encoding="utf-8"?>
<ValidateResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      Id="..." Service="..." ResultMajor="Success" RequestId="..."
      xmlns="http://www.w3.org/2002/03/xkms#">
  <KeyBinding Id="...">
    <ds:KeyInfo>
      <ds:X509Data>
        <ds:X509Certificate>...</ds:X509Certificate>
      </ds:X509Data>
    </ds:KeyInfo>
    <KeyUsage>Signature</KeyUsage>
    <KeyUsage>Encryption</KeyUsage>
    <KeyUsage>Exchange</KeyUsage>
    <UseKeyWith Application="urn:ietf:rfc:2633" Identifier="alice@alicecorp.test" />
    <Status StatusValue="Valid">
      <ValidReason>Signature</ValidReason>
      <ValidReason>IssuerTrust</ValidReason>
      <ValidReason>RevocationStatus</ValidReason>
      <ValidReason>ValidityInterval</ValidReason>
    </Status>
  </KeyBinding>
</ValidateResult>

 />
                

4. References

4.1 Normative References

[XKMS Part1]
"XML Key Management Specification (XKMS 2.0)" (See http://www.w3.org/2001/XKMS/Drafts/XKMS-PR-DRAFT/PR-DRAFT-xkms-part-1.html.)
[XKMS Part2]
"XML Key Management Specification (XKMS 2.0) Bindings" (See http://www.w3.org/2001/XKMS/Drafts/XKMS-PR-DRAFT/PR-DRAFT-xkms-part-1.html.)