/**
* A crypto-library independent signature validation result
* @typedef SignatureValidationResult
* @memberOf module:buildin
* @property {boolean} valid Is signature match document
* @property {string} errorMessage filled in case valid is false
* @property {number} errorCode Error code from library
* @property {string} warnings Optional warnings about signatures (for example - annotations in PDF)
* @property {boolean} tspValid Is timestamp retrieved from authorised source (not from local computer)
* @property {boolean} ocspVerified Is signer certificate status verified during signing
* @property {boolean} hardwareKeyUsed Is hardware token used to made signature
* @property {Date} signingTime Time of signing. In case tspValid this time is taken from authorised source using TSP protocol, in other case - this is **UNTRUSTED** time of local signer computer
* @property {Boolean} isDigitalStamp Is signature certificate is a digital time stamp
* @property {string} signAlgo Signature algorithm (DSTU-4145, RSA, ECDSA)
* @property {string} signType Type of signature (Qualified, Advanced)
* @property {string} containerType Type of signature container
* @property {string} mediaSerial For hardware keys - serial number of hardware key
*
* @property {Object} certificate Signer certificate information. In case valid===false certificate may not exist (or broken) and this property is empty object
* @property {String} certificate.certKind Certificate kind ('Qualified' \ 'Advanced')
* @property {String} certificate.keyUsage String with key usage information
* @property {String} certificate.serial Certificate serial number
* @property {Date} certificate.validFrom Certificate valid starting from this date
* @property {Date} certificate.validTo Certificate valid up to this date
* @property {Object} certificate.issuedBy Certificate issuer info
* @property {String} certificate.issuedBy.orgName Organization name what issue certificate
* @property {String} certificate.issuedBy.fullName Authority name what issue certificate
* @property {String} certificate.issuedBy.country Authority location country
* @property {String} certificate.issuedBy.locality Authority location locality
* @property {String} certificate.issuedBy.issuerID Authority ID
* @property {String} [certificate.issuedBy.orgUnit] Authority organization unit
* @property {ArrayBuffer} [certificate.certificateAsBuffer] Signer certificate in bin format
*
* @property {Object} subject Individual who owns a certificate. In case valid===false certificate may not exists (or broken) and this property is empty object
* @property {Object} [subject.DRFO] Individual DRFO (of ID card number in some cases)
* @property {Object} subject.fullName Individual full name. Can be empty for stamps?
* @property {String} subject.country Individual location country
* @property {String} subject.locality Individual location locality
* @property {String} [subject.eMail] Individual e-mail
* @property {String} [subject.phone] Individual phone number
*
* @property {Object} organization Organization where individual who owns a certificate works. In case of self-employed individual all fields are empty
* @property {String} organization.EDRPOU Organization EDRPOU
* @property {String} organization.orgName Organization EDRPOU
* @property {String} organization.digitalStampName In case certificate.isDigitalStamp===true contains stamp name
* @property {String} organization.position Position of individual within the organization
* @property {String} [organization.orgUnit] Department within the organization where individual works
*/