@ComponentProfile(summary="Sign data using a PGP/GPG private key", tag="pgp,gpg,sign,signature,private key", since="3.9.2") public class PGPSignService extends ServiceImp
<pgp-sign>
<unique-id>nostalgic-golick</unique-id>
<private-key class="constant-data-input-parameter">
<value>-----BEGIN PGP PRIVATE KEY BLOCK-----
lQPGBF2ckxABCAC5Kfu39ky3OIXkxwWOJx70G2dLRYvDMHXf3ZraUPNRMIhh3ZGx
-----END PGP PRIVATE KEY BLOCK-----</value>
</private-key>
<passphrase class="constant-data-input-parameter">
<value>my5ecr3tP455w0rd</value>
</passphrase>
<clearText class="stream-payload-input-parameter"/> <!-- clear text comes from message payload -->
<armor-encoding>true</armor-encoding>
<detached-signature>true</detached-signature>
<signature class="metadata-stream-output-parameter"> <!-- detached signature goes into message metadata -->
<metadata-key>signature</metadata-key>
</signature>
</pgp-sign>
In the adapter configuration file this class is aliased as pgp-sign which is the preferred alternative to the fully qualified classname when building your configuration.
Modifier and Type | Field and Description |
---|---|
protected static java.nio.charset.Charset |
CHARSET |
CONFIRMATION_ID_KEY
Constructor and Description |
---|
PGPSignService() |
Modifier and Type | Method and Description |
---|---|
protected void |
closeService()
.
|
void |
doService(AdaptrisMessage message)
.
|
protected java.io.InputStream |
extractStream(AdaptrisMessage message,
DataInputParameter parameter,
java.lang.String warning) |
protected java.lang.String |
extractString(AdaptrisMessage message,
DataInputParameter parameter,
java.lang.String warning) |
java.lang.Boolean |
getArmorEncoding()
Get whether the signature output should be ASCII armor encoded.
|
DataInputParameter |
getClearText()
Get the data to sign.
|
protected static java.io.InputStream |
getDecoderStream(java.io.InputStream in)
Obtains a stream that can be used to read PGP data from the provided stream.
|
java.lang.Boolean |
getDetachedSignature()
Get whether the signature should be detached from the message.
|
protected static int |
getLengthWithoutSeparatorOrTrailingWhitespace(byte[] line) |
protected static int |
getLengthWithoutWhiteSpace(byte[] line) |
protected static byte[] |
getLineSeparator() |
DataInputParameter |
getPassphrase()
Get the passphrase to unlock the private key.
|
DataInputParameter |
getPrivateKey()
Get the private key for decryption.
|
DataOutputParameter |
getSignature()
Get the signature.
|
protected void |
initService()
.
|
protected void |
insertStream(AdaptrisMessage message,
DataOutputParameter parameter,
java.io.ByteArrayOutputStream value) |
void |
prepare()
.
|
protected static void |
processLine(java.io.OutputStream aOut,
org.bouncycastle.openpgp.PGPSignatureGenerator sGen,
byte[] line) |
protected static void |
processLine(org.bouncycastle.openpgp.PGPSignature sig,
byte[] line) |
protected static int |
readInputLine(java.io.ByteArrayOutputStream bOut,
java.io.InputStream fIn) |
protected static int |
readInputLine(java.io.ByteArrayOutputStream bOut,
int lookAhead,
java.io.InputStream fIn) |
void |
setArmorEncoding(java.lang.Boolean armorEncoding)
Set whether the signature output should be ASCII armor encoded.
|
void |
setClearText(DataInputParameter clearText)
Set the data to sign.
|
void |
setDetachedSignature(java.lang.Boolean detachedSignature)
Set whether the signature should be detached from the message.
|
void |
setPassphrase(DataInputParameter passphrase)
Set the passphrase to unlock the private key.
|
void |
setPrivateKey(DataInputParameter privateKey)
Set the private key for decryption.
|
void |
setSignature(DataOutputParameter signature)
Set the signature.
|
changeState, close, continueOnFailure, createName, createQualifier, getContinueOnFail, getIsTrackingEndpoint, getLookupName, getUniqueId, init, isBranching, isTrackingEndpoint, requestClose, requestInit, requestStart, requestStop, retrieveComponentState, setContinueOnFail, setIsTrackingEndpoint, setLookupName, setUniqueId, start, stop
public void doService(AdaptrisMessage message) throws ServiceException
ServiceException
public void setPrivateKey(DataInputParameter privateKey)
privateKey
- The private key.public DataInputParameter getPrivateKey()
public void setPassphrase(DataInputParameter passphrase)
passphrase
- The passphrase.public DataInputParameter getPassphrase()
public void setClearText(DataInputParameter clearText)
clearText
- The data to sign.public DataInputParameter getClearText()
public void setArmorEncoding(java.lang.Boolean armorEncoding)
armorEncoding
- Whether the signature should be armor encoded.public java.lang.Boolean getArmorEncoding()
public void setDetachedSignature(java.lang.Boolean detachedSignature)
detachedSignature
- Whether the signature should be detached.public java.lang.Boolean getDetachedSignature()
public void setSignature(DataOutputParameter signature)
signature
- The signature.public DataOutputParameter getSignature()
protected void initService()
initService
in class ServiceImp
protected void closeService()
closeService
in class ServiceImp
public void prepare()
protected java.io.InputStream extractStream(AdaptrisMessage message, DataInputParameter parameter, java.lang.String warning) throws java.lang.Exception
java.lang.Exception
protected java.lang.String extractString(AdaptrisMessage message, DataInputParameter parameter, java.lang.String warning) throws java.lang.Exception
java.lang.Exception
protected void insertStream(AdaptrisMessage message, DataOutputParameter parameter, java.io.ByteArrayOutputStream value) throws java.lang.Exception
java.lang.Exception
protected static java.io.InputStream getDecoderStream(java.io.InputStream in) throws java.io.IOException
If the initial bytes of the underlying stream are binary PGP encodings, then the stream will
be returned directly, otherwise an ArmoredInputStream
is used to wrap the provided
stream and remove ASCII-Armored encoding.
in
- the stream to be checked and possibly wrapped.java.io.IOException
- if an error occurs reading the stream, or initialising the
ArmoredInputStream
.protected static void processLine(java.io.OutputStream aOut, org.bouncycastle.openpgp.PGPSignatureGenerator sGen, byte[] line) throws java.security.SignatureException, java.io.IOException
java.security.SignatureException
java.io.IOException
protected static void processLine(org.bouncycastle.openpgp.PGPSignature sig, byte[] line) throws java.security.SignatureException, java.io.IOException
java.security.SignatureException
java.io.IOException
protected static int getLengthWithoutWhiteSpace(byte[] line)
protected static int getLengthWithoutSeparatorOrTrailingWhitespace(byte[] line)
protected static byte[] getLineSeparator()
protected static int readInputLine(java.io.ByteArrayOutputStream bOut, java.io.InputStream fIn) throws java.io.IOException
java.io.IOException
protected static int readInputLine(java.io.ByteArrayOutputStream bOut, int lookAhead, java.io.InputStream fIn) throws java.io.IOException
java.io.IOException