[
https://issues.apache.org/jira/browse/WSS-710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17828206#comment-17828206
]
Joze Rihtarsic commented on WSS-710:
------------------------------------
[~coheigea]
Before I provide the PR I would need your advice/confirmation on how to
implement this.
I want to make two configuration options:
The first is quick one: to just set key derivation algorithm and key
derivation is then configured with default values which are
* for ConcatKDF
** DigestMethod: MessMessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256
** AlgorithmId: "0000"
** PartyUInfo: ""
** PartyVInfo: ""
** SuppPubInfo: null
** SuppPrivInfo: null
** Key size depends on ENC_KEY_TRANSPORT
* And for HKDF
** PRF: XMLSignature.ALGO_ID_MAC_HMAC_SHA256
** Info: null
** Salt: pseudorandom value in size of key
** Key size depends on ENC_KEY_TRANSPORT
The configuration can be done like this:
Map<String, Object> outProperties = new HashMap<>();
outProperties.put(ConfigurationConstants.ACTION,ConfigurationConstants.ENCRYPTION);
outProperties.put(ConfigurationConstants.ENC_PROP_FILE, "wss-ecdh.properties");
outProperties.put(ConfigurationConstants.ENCRYPTION_USER, encAlias);
outProperties.put(ConfigurationConstants.ENC_SYM_ALGO,
WSS4JConstants.AES_256_GCM);
outProperties.put(ConfigurationConstants.ENC_KEY_TRANSPORT,
WSS4JConstants.KEYWRAP_AES128);
outProperties.put(ConfigurationConstants.ENC_KEY_AGREEMENT_METHOD,
"http://www.w3.org/2021/04/xmldsig-more#x25519");
*outProperties.put(ConfigurationConstants.ENC_KEY_DERIVATION_FUNCTION,
"http://www.w3.org/2009/xmlenc11#ConcatKDF");*
another is more configurable approach where users/developers can pass the
org.apache.xml.security.encryption.params.KeyDerivationParameters
For example
*KeyDerivationParameters kdfParams = new ConcatKDFParams(keyBitLen,
MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256);*
*kdfParams.setAlgorithmId(00363532534541);*
*kdfParams.setPartyUInfo("00DFC9DB773C588F8F");*
*kdfParams.setPartyVInfo("00DFDA76F7AB09B7C9");*
*kdfParams.setSuppPubInfo(null);*
*kdfParams.setSuppPrivInfo(null);*
....
Map<String, Object> outProperties = new HashMap<>();
outProperties.put(ConfigurationConstants.ACTION,ConfigurationConstants.ENCRYPTION);
outProperties.put(ConfigurationConstants.ENC_PROP_FILE, "wss-ecdh.properties");
outProperties.put(ConfigurationConstants.ENCRYPTION_USER, encAlias);
outProperties.put(ConfigurationConstants.ENC_SYM_ALGO,
WSS4JConstants.AES_256_GCM);
outProperties.put(ConfigurationConstants.ENC_KEY_TRANSPORT,
WSS4JConstants.KEYWRAP_AES128);
outProperties.put(ConfigurationConstants.ENC_KEY_AGREEMENT_METHOD,
"http://www.w3.org/2021/04/xmldsig-more#x25519");
*outProperties.put(ConfigurationConstants.ENC_KEY_DERIVATION_PARAMETERS,
kdfParams);*
Are these two approaches acceptable for WSS4J?
> Implementation of the configuration options to set KeyDerivation parameters
> ----------------------------------------------------------------------------
>
> Key: WSS-710
> URL: https://issues.apache.org/jira/browse/WSS-710
> Project: WSS4J
> Issue Type: New Feature
> Components: WSS4J Core
> Affects Versions: 4.0.0, 3.0.3
> Reporter: Joze Rihtarsic
> Assignee: Colm O hEigeartaigh
> Priority: Major
>
> The santuarion/xmlsec library has (will have)
> [https://github.com/apache/santuario-xml-security-java/pull/271]
> two options for key agreement to set key derivation methods
> The existing ConcatKDF (see the scheme:
> [xmlenc-core1|https://www.w3.org/TR/xmlenc-core1/#sec-ConcatKDF]
> The HKDF (see the scheme from upcoming standard
> [draft-eastlake-rfc9231bis|https://www.ietf.org/archive/id/draft-eastlake-rfc9231bis-xmlsec-uris-03.html]
> )
> The purpose of this task is to enable configurations for the key agreement
> method , to be able to configure one of the two options
> * ConcatKDF with parameter :
> {{{}AlgorithmID{}}}, {{{}PartyUInfo{}}}, {{{}PartyVInfo{}}}, {{SuppPubInfo}}
> and {{SuppPrivInfo}} amd digest
> * HKDF with parameter : PRF, Salt and Info
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]