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.