libdigidocpp
digidoc::Signature Class Reference

#include <Signature.h>

Inheritance diagram for digidoc::Signature:
Inheritance graph
Collaboration diagram for digidoc::Signature:
Collaboration graph

Public Types

enum  CertStatus { GOOD, REVOKED, UNKNOWN }

Public Member Functions

virtual ~Signature ()
virtual std::string getMediaType () const =0
virtual void validateOffline () const =0 throw (SignatureException)
virtual CertStatus validateOnline () const =0 throw (SignatureException)
std::string saveToXml () throw (IOException)
std::string getId () const
SignatureProductionPlace getProductionPlace () const
SignerRole getSignerRole () const
std::string getSigningTime () const
X509Cert getSigningCertificate () const throw (SignatureException)
std::string getSignatureMethod () const

Protected Member Functions

 Signature (unsigned int id)
 Signature (const std::string &path) throw (SignatureException)
virtual void sign (Signer *signer)=0 throw (SignatureException, SignException)
void addReference (const std::string &uri, const std::string &digestUri, const std::vector< unsigned char > &digestValue, const std::string &type="") throw (SignatureException)
void setSigningCertificate (const X509Cert &cert)
void setSignatureProductionPlace (const SignatureProductionPlace &signatureProductionPlace)
void setSignerRole (const SignerRole &signerRole)
void setSigningTime (const xml_schema::DateTime &signingTime)
std::vector< unsigned char > getSignatureValue () const
void setSignatureValue (Signer::Signature signatureValue)
xades::SignedSignaturePropertiesType & getSignedSignatureProperties () const throw (SignatureException)
dsig::X509DataType::X509CertificateType & getSigningX509CertificateType () const throw (SignatureException)
std::vector< unsigned char > calcDigestOnNode (Digest *calc, const std::string &ns, const std::string &tagName) const throw (SignatureException)

Protected Attributes

dsig::SignatureType * signature

Static Protected Attributes

static const std::string XADES_NAMESPACE = "http://uri.etsi.org/01903/v1.3.2#"

Private Member Functions

void saveToXml (const std::string &path) const throw (IOException)

Private Attributes

std::string path

Friends

class BDoc

Detailed Description

Definition at line 31 of file Signature.h.

Member Enumeration Documentation

Enumerator:
GOOD 
REVOKED 
UNKNOWN 

Definition at line 36 of file Signature.h.

Constructor & Destructor Documentation

digidoc::Signature::~Signature ( )
virtual

Release signature.

Definition at line 120 of file Signature.cpp.

digidoc::Signature::Signature ( unsigned int  id)
protected

Creates an new empty signature.

Definition at line 45 of file Signature.cpp.

References format, and signature.

digidoc::Signature::Signature ( const std::string &  path) throw (SignatureException)
protected

Parses signature from XML file.

Parameters
pathpath to signature XML file.
Exceptions
SignatureExceptionexception is thrown if the signature parsing failed (e.g. not a xml file, invalid xml file, etc).

Definition at line 95 of file Signature.cpp.

References e, digidoc::Conf::getInstance(), and THROW_SIGNATUREEXCEPTION.

Here is the call graph for this function:

Member Function Documentation

void digidoc::Signature::addReference ( const std::string &  uri,
const std::string &  digestUri,
const std::vector< unsigned char > &  digestValue,
const std::string &  type = "" 
) throw (SignatureException)
protected

Adds artifact digest value as reference in the signature.

Parameters
urireference URI.
digestUridigest method URI (e.g. 'http://www.w3.org/2000/09/xmldsig#sha1' for SHA1)
digestValuedigest value.
typereference type, optional parameter, default no type is added to the reference. For example 'http://uri.etsi.org/01903/#SignedProperties' for signed properties reference.
Exceptions
SignatureExceptionthrows exception if the digest method is not supported.

Definition at line 136 of file Signature.cpp.

References value.

std::vector< unsigned char > digidoc::Signature::calcDigestOnNode ( Digest calc,
const std::string &  ns,
const std::string &  tagName 
) const throw (SignatureException)
protected

Canonicalize XML node using one of the supported methods in XML-DSIG Using Xerces for parsing XML to preserve the white spaces "as is" and get the same digest value on XML node each time.

Parameters
calcdigest calculator implementation.
nssignature tag namespace.
tagNamesignature tag name.

Definition at line 297 of file Signature.cpp.

References DEBUG, e, digidoc::util::File::tempFileName(), THROW_SIGNATUREEXCEPTION, and THROW_SIGNATUREEXCEPTION_CAUSE.

Here is the call graph for this function:

std::string digidoc::Signature::getId ( ) const

Signature id

Returns
returns signature id

Definition at line 562 of file Signature.cpp.

virtual std::string digidoc::Signature::getMediaType ( ) const
pure virtual

Implemented in digidoc::SignatureDDOC, digidoc::SignatureBES, and digidoc::SignatureTM.

Referenced by open().

Here is the caller graph for this function:

digidoc::SignatureProductionPlace digidoc::Signature::getProductionPlace ( ) const

The address where was the signature given.

Returns
returns structure containing the address of signing place.

Definition at line 466 of file Signature.cpp.

References digidoc::SignatureProductionPlace::city, digidoc::SignatureProductionPlace::countryName, digidoc::SignatureProductionPlace::postalCode, and digidoc::SignatureProductionPlace::stateOrProvince.

Referenced by open(), and testOpenBDocBES().

Here is the caller graph for this function:

std::string digidoc::Signature::getSignatureMethod ( ) const

Signer signature method

Returns
returns the signature method.

Definition at line 572 of file Signature.cpp.

std::vector< unsigned char > digidoc::Signature::getSignatureValue ( ) const
protected
Returns
returns signature value.

Definition at line 278 of file Signature.cpp.

digidoc::xades::SignedSignaturePropertiesType & digidoc::Signature::getSignedSignatureProperties ( ) const throw (SignatureException)
protected

Helper that retrieves SignedSignatureProperties xades object. It will throw in case the block is not present.

Returns
returns the SignedSignaturePropertiesType object.

Definition at line 617 of file Signature.cpp.

References THROW_SIGNATUREEXCEPTION.

Referenced by digidoc::SignatureBES::SignatureBES().

Here is the caller graph for this function:

digidoc::SignerRole digidoc::Signature::getSignerRole ( ) const

The role that signer claims to hold while signing.

Returns
returns the claimed role of the signer.

Definition at line 491 of file Signature.cpp.

References digidoc::SignerRole::claimedRoles.

Referenced by open(), and testOpenBDocBES().

Here is the caller graph for this function:

digidoc::X509Cert digidoc::Signature::getSigningCertificate ( ) const throw (SignatureException)

Signer certificate taken from current signature.

Returns
returns the SignedSignaturePropertiesType object.
Exceptions
SignatureException

Definition at line 543 of file Signature.cpp.

References e, and THROW_SIGNATUREEXCEPTION_CAUSE.

Referenced by open(), and testShowCertInfo().

Here is the caller graph for this function:

std::string digidoc::Signature::getSigningTime ( ) const

The role that signer claims to hold while signing.

Returns
returns the claimed role of the signer.

Definition at line 525 of file Signature.cpp.

References digidoc::util::date::xsd2string().

Referenced by open(), and testOpenBDocBES().

Here is the call graph for this function:

Here is the caller graph for this function:

digidoc::dsig::X509DataType::X509CertificateType & digidoc::Signature::getSigningX509CertificateType ( ) const throw (SignatureException)
protected

Get xades object for the certificate of the signer.

Returns
returns the one and only X509CertificateType object.

Definition at line 582 of file Signature.cpp.

References THROW_SIGNATUREEXCEPTION.

Referenced by digidoc::SignatureBES::SignatureBES().

Here is the caller graph for this function:

std::string digidoc::Signature::saveToXml ( ) throw (IOException)

Saves signature to file using XAdES XML format.

Returns
returns path of the signature XML.
Exceptions
IOExceptionthrows exception if the signature file creation failed.

Definition at line 421 of file Signature.cpp.

References digidoc::util::File::tempFileName().

Referenced by testSignBDoc().

Here is the call graph for this function:

Here is the caller graph for this function:

void digidoc::Signature::saveToXml ( const std::string &  path) const throw (IOException)
private

Saves signature to file using XAdES XML format.

Parameters
pathpath, where the signature XML file is saved.
Exceptions
IOExceptionthrows exception if the signature file creation failed.

Definition at line 438 of file Signature.cpp.

References DEBUG, digidoc::util::File::encodeName(), and THROW_IOEXCEPTION.

Here is the call graph for this function:

void digidoc::Signature::setSignatureProductionPlace ( const SignatureProductionPlace spp)
protected

Sets signature production place.

Parameters
sppsignature production place.

Definition at line 206 of file Signature.cpp.

References digidoc::SignatureProductionPlace::city, digidoc::SignatureProductionPlace::countryName, DEBUG, digidoc::SignatureProductionPlace::postalCode, and digidoc::SignatureProductionPlace::stateOrProvince.

Referenced by digidoc::SignatureDDOC::SignatureDDOC().

Here is the caller graph for this function:

void digidoc::Signature::setSignatureValue ( Signer::Signature  sigValue)
protected

Sets signature value.

Parameters
sigValuesignature value.

Definition at line 261 of file Signature.cpp.

References digidoc::Signer::Signature::length, and digidoc::Signer::Signature::signature.

Referenced by digidoc::SignatureDDOC::SignatureDDOC().

Here is the caller graph for this function:

void digidoc::Signature::setSignerRole ( const SignerRole roles)
protected

Sets signer claimed roles to the signature. NB! Only ClaimedRoles are supported. CerifiedRoles are not supported.

Parameters
rolessigner roles.

Definition at line 226 of file Signature.cpp.

References digidoc::SignerRole::claimedRoles.

Referenced by digidoc::SignatureDDOC::SignatureDDOC().

Here is the caller graph for this function:

void digidoc::Signature::setSigningCertificate ( const X509Cert x509)
protected

Adds signing certificate to the signature XML. The DER encoded X.509 certificate is added to Signature->KeyInfo->X509Data->X509Certificate. Certificate info is also added to Signature->Object->QualifyingProperties->SignedProperties->SignedSignatureProperties->SigningCertificate.

Parameters
certcertificate that is used for signing the signature XML.

Definition at line 155 of file Signature.cpp.

References DEBUG, digidoc::X509Cert::encodeDER(), digidoc::Digest::getDigest(), digidoc::X509Cert::getIssuerName(), digidoc::X509Cert::getRsaExponent(), digidoc::X509Cert::getRsaModulus(), digidoc::X509Cert::getSerial(), digidoc::Digest::getSize(), digidoc::Digest::getUri(), and digidoc::Digest::update().

Referenced by digidoc::SignatureDDOC::SignatureDDOC().

Here is the call graph for this function:

Here is the caller graph for this function:

void digidoc::Signature::setSigningTime ( const xml_schema::DateTime &  signingTime)
protected

Sets signature signing time.

Parameters
signingTimesigning time.

Definition at line 250 of file Signature.cpp.

Referenced by digidoc::SignatureDDOC::SignatureDDOC().

Here is the caller graph for this function:

virtual void digidoc::Signature::sign ( Signer signer) throw (SignatureException, SignException)
protectedpure virtual

Implemented in digidoc::SignatureDDOC, digidoc::SignatureBES, and digidoc::SignatureTM.

Referenced by digidoc::BDoc::sign().

Here is the caller graph for this function:

virtual void digidoc::Signature::validateOffline ( ) const throw (SignatureException)
pure virtual

Implemented in digidoc::SignatureDDOC, digidoc::SignatureTM, and digidoc::SignatureBES.

Referenced by open(), testOpenBDocBES(), and testTMValidate().

Here is the caller graph for this function:

virtual CertStatus digidoc::Signature::validateOnline ( ) const throw (SignatureException)
pure virtual

Implemented in digidoc::SignatureDDOC, and digidoc::SignatureBES.

Referenced by open().

Here is the caller graph for this function:

Friends And Related Function Documentation

friend class BDoc
friend

Definition at line 33 of file Signature.h.

Member Data Documentation

std::string digidoc::Signature::path
private

Definition at line 78 of file Signature.h.

dsig::SignatureType* digidoc::Signature::signature
protected

Definition at line 71 of file Signature.h.

Referenced by Signature().

const std::string digidoc::Signature::XADES_NAMESPACE = "http://uri.etsi.org/01903/v1.3.2#"
staticprotected

Definition at line 73 of file Signature.h.


The documentation for this class was generated from the following files: