|
libdigidocpp
|
#include <Signature.h>


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 |
Definition at line 31 of file Signature.h.
Definition at line 36 of file Signature.h.
|
virtual |
Release signature.
Definition at line 120 of file Signature.cpp.
|
protected |
Creates an new empty signature.
Definition at line 45 of file Signature.cpp.
|
protected |
Parses signature from XML file.
| path | path to signature XML file. |
| SignatureException | exception 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.

|
protected |
Adds artifact digest value as reference in the signature.
| uri | reference URI. |
| digestUri | digest method URI (e.g. 'http://www.w3.org/2000/09/xmldsig#sha1' for SHA1) |
| digestValue | digest value. |
| type | reference type, optional parameter, default no type is added to the reference. For example 'http://uri.etsi.org/01903/#SignedProperties' for signed properties reference. |
| SignatureException | throws exception if the digest method is not supported. |
Definition at line 136 of file Signature.cpp.
References value.
|
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.
| calc | digest calculator implementation. |
| ns | signature tag namespace. |
| tagName | signature tag name. |
Definition at line 297 of file Signature.cpp.
References DEBUG, e, digidoc::util::File::tempFileName(), THROW_SIGNATUREEXCEPTION, and THROW_SIGNATUREEXCEPTION_CAUSE.

| std::string digidoc::Signature::getId | ( | ) | const |
|
pure virtual |
Implemented in digidoc::SignatureDDOC, digidoc::SignatureBES, and digidoc::SignatureTM.
Referenced by open().

| digidoc::SignatureProductionPlace digidoc::Signature::getProductionPlace | ( | ) | const |
The address where was the signature given.
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().

| std::string digidoc::Signature::getSignatureMethod | ( | ) | const |
Signer signature method
Definition at line 572 of file Signature.cpp.
|
protected |
Definition at line 278 of file Signature.cpp.
|
protected |
Helper that retrieves SignedSignatureProperties xades object. It will throw in case the block is not present.
Definition at line 617 of file Signature.cpp.
References THROW_SIGNATUREEXCEPTION.
Referenced by digidoc::SignatureBES::SignatureBES().

| digidoc::SignerRole digidoc::Signature::getSignerRole | ( | ) | const |
The role that signer claims to hold while signing.
Definition at line 491 of file Signature.cpp.
References digidoc::SignerRole::claimedRoles.
Referenced by open(), and testOpenBDocBES().

| digidoc::X509Cert digidoc::Signature::getSigningCertificate | ( | ) | const throw (SignatureException) |
Signer certificate taken from current signature.
| SignatureException |
Definition at line 543 of file Signature.cpp.
References e, and THROW_SIGNATUREEXCEPTION_CAUSE.
Referenced by open(), and testShowCertInfo().

| std::string digidoc::Signature::getSigningTime | ( | ) | const |
The role that signer claims to hold while signing.
Definition at line 525 of file Signature.cpp.
References digidoc::util::date::xsd2string().
Referenced by open(), and testOpenBDocBES().


|
protected |
Get xades object for the certificate of the signer.
Definition at line 582 of file Signature.cpp.
References THROW_SIGNATUREEXCEPTION.
Referenced by digidoc::SignatureBES::SignatureBES().

| std::string digidoc::Signature::saveToXml | ( | ) | throw (IOException) |
Saves signature to file using XAdES XML format.
| IOException | throws exception if the signature file creation failed. |
Definition at line 421 of file Signature.cpp.
References digidoc::util::File::tempFileName().
Referenced by testSignBDoc().


|
private |
Saves signature to file using XAdES XML format.
| path | path, where the signature XML file is saved. |
| IOException | throws exception if the signature file creation failed. |
Definition at line 438 of file Signature.cpp.
References DEBUG, digidoc::util::File::encodeName(), and THROW_IOEXCEPTION.

|
protected |
Sets signature production place.
| spp | signature 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().

|
protected |
Sets signature value.
| sigValue | signature value. |
Definition at line 261 of file Signature.cpp.
References digidoc::Signer::Signature::length, and digidoc::Signer::Signature::signature.
Referenced by digidoc::SignatureDDOC::SignatureDDOC().

|
protected |
Sets signer claimed roles to the signature. NB! Only ClaimedRoles are supported. CerifiedRoles are not supported.
| roles | signer roles. |
Definition at line 226 of file Signature.cpp.
References digidoc::SignerRole::claimedRoles.
Referenced by digidoc::SignatureDDOC::SignatureDDOC().

|
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.
| cert | certificate 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().


|
protected |
Sets signature signing time.
| signingTime | signing time. |
Definition at line 250 of file Signature.cpp.
Referenced by digidoc::SignatureDDOC::SignatureDDOC().

|
protectedpure virtual |
Implemented in digidoc::SignatureDDOC, digidoc::SignatureBES, and digidoc::SignatureTM.
Referenced by digidoc::BDoc::sign().

|
pure virtual |
Implemented in digidoc::SignatureDDOC, digidoc::SignatureTM, and digidoc::SignatureBES.
Referenced by open(), testOpenBDocBES(), and testTMValidate().

|
pure virtual |
Implemented in digidoc::SignatureDDOC, and digidoc::SignatureBES.
Referenced by open().

|
friend |
Definition at line 33 of file Signature.h.
|
private |
Definition at line 78 of file Signature.h.
|
protected |
Definition at line 71 of file Signature.h.
Referenced by Signature().
|
staticprotected |
Definition at line 73 of file Signature.h.