public class WSSecEncryptedKey extends WSSecBase
EncryptedKey
has to be used to sign and encrypt the message In
such a situation this builder will add the EncryptedKey
to the
security header and we can use the information form the builder to provide to
other builders to reference to the tokenModifier and Type | Field and Description |
---|---|
protected BinarySecurity |
bstToken
BinarySecurityToken to be included in the case where BST_DIRECT_REFERENCE
is used to refer to the asymmetric encryption cert
|
protected String |
customEKTokenId
Custom token id
|
protected String |
customEKTokenValueType
Custom token value
|
protected String |
digestAlgo
Digest Algorithm to be used with RSA-OAEP.
|
protected Document |
document |
protected String |
encKeyId
The Token identifier of the token that the
DerivedKeyToken
is (or to be) derived from. |
protected String |
encrUser
Remote user's alias to obtain the cert to encrypt the ephemeral key
|
protected byte[] |
encryptedEphemeralKey
Encrypted bytes of the ephemeral key
|
protected Element |
encryptedKeyElement
xenc:EncryptedKey element
|
protected Element |
envelope
soap:Envelope element
|
protected byte[] |
ephemeralKey
Session key used as the secret in key derivation
|
protected String |
keyEncAlgo
Algorithm used to encrypt the ephemeral key
|
protected String |
symEncAlgo
Algorithm to be used with the ephemeral key
|
protected SecretKey |
symmetricKey
Symmetric key used in the EncryptedKey.
|
protected X509Certificate |
useThisCert |
callbackLookup, doDebug, keyIdentifierType, parts, password, user
Constructor and Description |
---|
WSSecEncryptedKey() |
WSSecEncryptedKey(WSSConfig config) |
Modifier and Type | Method and Description |
---|---|
void |
appendBSTElementToHeader(WSSecHeader secHeader)
Append the BinarySecurityToken to the elements already in the Security
header.
|
void |
appendToHeader(WSSecHeader secHeader)
Append the EncryptedKey element to the elements already in the Security
header.
|
protected Element |
createCipherValue(Document doc,
Element encryptedKey) |
protected Element |
createEncryptedKey(Document doc,
String keyTransportAlgo)
Create DOM subtree for
xenc:EncryptedKey |
Element |
getBinarySecurityTokenElement() |
String |
getBSTTokenId()
Get the id of the BSt generated during
prepare() . |
String |
getDigestAlgorithm()
Get the digest algorithm to use with the RSA-OAEP key transport algorithm.
|
byte[] |
getEncryptedEphemeralKey() |
Element |
getEncryptedKeyElement() |
byte[] |
getEphemeralKey() |
String |
getId()
Get the id generated during
prepare() . |
protected KeyGenerator |
getKeyGenerator() |
String |
getSymmetricEncAlgorithm()
Get the name of symmetric encryption algorithm to use.
|
SecretKey |
getSymmetricKey() |
boolean |
isCertSet() |
void |
prepare(Document doc,
Crypto crypto)
Prepare the ephemeralKey and the tokens required to be added to the
security header
|
protected void |
prepareInternal(SecretKey secretKey,
X509Certificate remoteCert,
Crypto crypto)
Encrypt the symmetric key data and prepare the EncryptedKey element
This method does the most work for to prepare the EncryptedKey element.
|
void |
prependBSTElementToHeader(WSSecHeader secHeader)
Prepend the BinarySecurityToken to the elements already in the Security
header.
|
void |
prependToHeader(WSSecHeader secHeader)
Prepend the EncryptedKey element to the elements already in the Security
header.
|
void |
setCustomEKTokenId(String customEKTokenId) |
void |
setCustomEKTokenValueType(String customEKTokenValueType) |
void |
setDigestAlgorithm(String digestAlgorithm)
Set the digest algorithm to use with the RSA-OAEP key transport algorithm.
|
void |
setDocument(Document document) |
void |
setEncKeyId(String encKeyId) |
void |
setEncryptedKeyElement(Element encryptedKeyElement)
Set the encrypted key element when a pre prepared encrypted key is used
|
void |
setEphemeralKey(byte[] ephemeralKey) |
void |
setKeyEncAlgo(String keyEncAlgo) |
void |
setSymmetricEncAlgorithm(String algo)
Set the name of the symmetric encryption algorithm to use.
|
void |
setSymmetricKey(SecretKey key)
Set the symmetric key to be used for encryption
|
void |
setUserInfo(String user)
Set the user name to get the encryption certificate.
|
void |
setUseThisCert(X509Certificate cert)
Set the X509 Certificate to use for encryption.
|
getKeyIdentifierType, getWsConfig, setBodyID, setCallbackLookup, setKeyIdentifierType, setParts, setUserInfo, setWsConfig, setWsuId
protected Document document
protected Element envelope
protected byte[] ephemeralKey
protected SecretKey symmetricKey
protected byte[] encryptedEphemeralKey
protected String encrUser
protected String keyEncAlgo
protected String symEncAlgo
protected String digestAlgo
protected Element encryptedKeyElement
protected String encKeyId
DerivedKeyToken
is (or to be) derived from.protected String customEKTokenValueType
protected String customEKTokenId
protected BinarySecurity bstToken
protected X509Certificate useThisCert
public WSSecEncryptedKey()
public WSSecEncryptedKey(WSSConfig config)
public void setUserInfo(String user)
user
- public String getId()
prepare()
.
Returns the the value of wsu:Id attribute of the EncryptedKey element.prepare()
was not called before.public void prepare(Document doc, Crypto crypto) throws WSSecurityException
doc
- The SOAP envelope as Document
crypto
- An instance of the Crypto API to handle keystore and certificatesWSSecurityException
protected void prepareInternal(SecretKey secretKey, X509Certificate remoteCert, Crypto crypto) throws WSSecurityException
secretKey
- The symmetric keyremoteCert
- The certificate that contains the public key to encrypt the
symmetric key datacrypto
- An instance of the Crypto API to handle keystore and certificatesWSSecurityException
protected KeyGenerator getKeyGenerator() throws WSSecurityException
WSSecurityException
protected Element createEncryptedKey(Document doc, String keyTransportAlgo)
xenc:EncryptedKey
doc
- the SOAP envelope parent documentkeyTransportAlgo
- specifies which algorithm to use to encrypt the symmetric keyxenc:EncryptedKey
elementpublic void prependToHeader(WSSecHeader secHeader)
prepare()
. This
allows to insert the EncryptedKey element at any position in the Security
header.secHeader
- The security header that holds the Signature element.public void appendToHeader(WSSecHeader secHeader)
prepare()
. This
allows to insert the EncryptedKey element at any position in the Security
header.secHeader
- The security header that holds the Signature element.public void prependBSTElementToHeader(WSSecHeader secHeader)
prepare()
. This
allows to insert the BST element at any position in the Security header.secHeader
- The security header that holds the BST element.public void appendBSTElementToHeader(WSSecHeader secHeader)
prepare()
. This
allows to insert the BST element at any position in the Security header.secHeader
- The security header that holds the BST element.public byte[] getEphemeralKey()
public void setUseThisCert(X509Certificate cert)
DirectReference
then use this certificate to get the
public key for encryption.cert
- is the X509 certificate to use for encryptionpublic Element getEncryptedKeyElement()
public void setEncryptedKeyElement(Element encryptedKeyElement)
encryptedKeyElement
- EncryptedKey element of the encrypted key usedpublic Element getBinarySecurityTokenElement()
public void setKeyEncAlgo(String keyEncAlgo)
public void setEphemeralKey(byte[] ephemeralKey)
ephemeralKey
- The ephemeralKey to set.public String getBSTTokenId()
prepare()
.public void setDocument(Document document)
document
- The document to set.public void setEncKeyId(String encKeyId)
encKeyId
- The encKeyId to set.public boolean isCertSet()
public byte[] getEncryptedEphemeralKey()
public void setCustomEKTokenValueType(String customEKTokenValueType)
public void setCustomEKTokenId(String customEKTokenId)
public void setSymmetricEncAlgorithm(String algo)
algo
- Is the name of the encryption algorithmWSConstants.TRIPLE_DES
,
WSConstants.AES_128
,
WSConstants.AES_192
,
WSConstants.AES_256
public String getSymmetricEncAlgorithm()
WSConstants.TRIPLE_DES
,
WSConstants.AES_128
,
WSConstants.AES_192
,
WSConstants.AES_256
public void setDigestAlgorithm(String digestAlgorithm)
digestAlgorithm
- the digest algorithm to use with the RSA-OAEP key transport algorithmpublic String getDigestAlgorithm()
public SecretKey getSymmetricKey()
public void setSymmetricKey(SecretKey key)
key
- Copyright © 2004–2014 The Apache Software Foundation. All rights reserved.