I'm trying to digitally sign XML document using client-server signing. The certificate is in a Workstation, I'm using a C# desktop app to read the certificates and do the signing with the private key.
The server generates digest of XML and sends the digest to client, the client signs the digest/hash with client`s private key and sends it to server then the server merges the signed hash with the XML file to get the signed XML.
I have a REST service with two endpoints one to getDataToSign and the other one to generate and add the signature value to document.
The signed file is generated successfully then when I try to validate the signature seems to be that is incorrect, I got the following message:
Qualification: N/A
Qualification Details : Unable to build a certificate chain up to a trusted list!
The signature/seal is not a valid AdES digital signature!
Signature format: XAdES-BASELINE-B
Indication: TOTAL_FAILED
Sub indication: HASH_FAILURE
AdES Validation Details : The reference data object is not intact!
//SERVER SIDE
1. getDataToSign
// Initialize the rest client
RestDocumentSignatureService restClient = new RestDocumentSignatureServiceImpl();
// Initialize parameters
RemoteSignatureParameters parameters = new RemoteSignatureParameters();
parameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_B);
parameters.setSignaturePackaging(SignaturePackaging.ENVELOPING);
parameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
parameters.getBLevelParams().setSigningDate(new Date());
parameters.setGenerateTBSWithoutCertificate(true);
@PostMapping("/getDataToSign")
ResponseEntity<?> getDataToSign(@RequestBody DataToSignOneDocumentDTO dataToSignDTO) {
// Add parameters
dataToSignDTO.setParameters(parameters);
// Compute the digest to be signed
ToBeSignedDTO dataToSign = restClient.getDataToSign(dataToSignDTO);
return ResponseEntity.ok().body(dataToSign);
}
// CLIENT SIDE
2. Get the signature value for signed information using the private key and specified algorithm
// Using C# desktop app to read workstation certificates
public byte[] SignData(byte[] dataToSign, X509Certificate2 certificate)
{
using (RSA rsa = certificate.GetRSAPrivateKey())
{
signatureValue = rsa.SignData(dataToSign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
return signatureValue;
}
}
// SERVER SIDE
3. POST /signDocument
ResponseEntity<?> signDocument(@RequestBody SignOneDocumentDTO signDocument)
// Add parameters
dataToSignDTO.setParameters(parameters);
// Add the signature value to the document
RemoteDocument signedDocument = restClient.signDocument(signDocument);
First request:
curl --location --request POST 'http://localhost:8080/getDataToSign' \
--header 'Content-Type: application/json' \
--data-raw '{
"toSignDocument" : {
"bytes" : "PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8Y2F0YWxvZz4NCiAgIDxib29rIGlkPSJiazEwMSI+DQogICAgICA8YXV0aG9yPkdhbWJhcmRlbGxhLCBNYXR0aGV3PC9hdXRob3I+DQogICAgICA8dGl0bGU+WE1MIERldmVsb3BlcidzIEd1aWRlPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Db21wdXRlcjwvZ2VucmU+DQogICAgICA8cHJpY2U+NDQuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEwLTAxPC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QW4gaW4tZGVwdGggbG9vayBhdCBjcmVhdGluZyBhcHBsaWNhdGlvbnMgDQogICAgICB3aXRoIFhNTC48L2Rlc2NyaXB0aW9uPg0KICAgPC9ib29rPg0KICAgPGJvb2sgaWQ9ImJrMTAyIj4NCiAgICAgIDxhdXRob3I+UmFsbHMsIEtpbTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPk1pZG5pZ2h0IFJhaW48L3RpdGxlPg0KICAgICAgPGdlbnJlPkZhbnRhc3k8L2dlbnJlPg0KICAgICAgPHByaWNlPjUuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEyLTE2PC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QSBmb3JtZXIgYXJjaGl0ZWN0IGJhdHRsZXMgY29ycG9yYXRlIHpvbWJpZXMsIA0KICAgICAgYW4gZXZpbCBzb3JjZXJlc3MsIGFuZCBoZXIgb3duIGNoaWxkaG9vZCB0byBiZWNvbWUgcXVlZW4gDQogICAgICBvZiB0aGUgd29ybGQuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwMyI+DQogICAgICA8YXV0aG9yPkNvcmV0cywgRXZhPC9hdXRob3I+DQogICAgICA8dGl0bGU+TWFldmUgQXNjZW5kYW50PC90aXRsZT4NCiAgICAgIDxnZW5yZT5GYW50YXN5PC9nZW5yZT4NCiAgICAgIDxwcmljZT41Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMS0xNzwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPkFmdGVyIHRoZSBjb2xsYXBzZSBvZiBhIG5hbm90ZWNobm9sb2d5IA0KICAgICAgc29jaWV0eSBpbiBFbmdsYW5kLCB0aGUgeW91bmcgc3Vydml2b3JzIGxheSB0aGUgDQogICAgICBmb3VuZGF0aW9uIGZvciBhIG5ldyBzb2NpZXR5LjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMDQiPg0KICAgICAgPGF1dGhvcj5Db3JldHMsIEV2YTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPk9iZXJvbidzIExlZ2FjeTwvdGl0bGU+DQogICAgICA8Z2VucmU+RmFudGFzeTwvZ2VucmU+DQogICAgICA8cHJpY2U+NS45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDEtMDMtMTA8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5JbiBwb3N0LWFwb2NhbHlwc2UgRW5nbGFuZCwgdGhlIG15c3RlcmlvdXMgDQogICAgICBhZ2VudCBrbm93biBvbmx5IGFzIE9iZXJvbiBoZWxwcyB0byBjcmVhdGUgYSBuZXcgbGlmZSANCiAgICAgIGZvciB0aGUgaW5oYWJpdGFudHMgb2YgTG9uZG9uLiBTZXF1ZWwgdG8gTWFldmUgDQogICAgICBBc2NlbmRhbnQuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwNSI+DQogICAgICA8YXV0aG9yPkNvcmV0cywgRXZhPC9hdXRob3I+DQogICAgICA8dGl0bGU+VGhlIFN1bmRlcmVkIEdyYWlsPC90aXRsZT4NCiAgICAgIDxnZW5yZT5GYW50YXN5PC9nZW5yZT4NCiAgICAgIDxwcmljZT41Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMS0wOS0xMDwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPlRoZSB0d28gZGF1Z2h0ZXJzIG9mIE1hZXZlLCBoYWxmLXNpc3RlcnMsIA0KICAgICAgYmF0dGxlIG9uZSBhbm90aGVyIGZvciBjb250cm9sIG9mIEVuZ2xhbmQuIFNlcXVlbCB0byANCiAgICAgIE9iZXJvbidzIExlZ2FjeS48L2Rlc2NyaXB0aW9uPg0KICAgPC9ib29rPg0KICAgPGJvb2sgaWQ9ImJrMTA2Ij4NCiAgICAgIDxhdXRob3I+UmFuZGFsbCwgQ3ludGhpYTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPkxvdmVyIEJpcmRzPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Sb21hbmNlPC9nZW5yZT4NCiAgICAgIDxwcmljZT40Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0wOS0wMjwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPldoZW4gQ2FybGEgbWVldHMgUGF1bCBhdCBhbiBvcm5pdGhvbG9neSANCiAgICAgIGNvbmZlcmVuY2UsIHRlbXBlcnMgZmx5IGFzIGZlYXRoZXJzIGdldCBydWZmbGVkLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMDciPg0KICAgICAgPGF1dGhvcj5UaHVybWFuLCBQYXVsYTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPlNwbGlzaCBTcGxhc2g8L3RpdGxlPg0KICAgICAgPGdlbnJlPlJvbWFuY2U8L2dlbnJlPg0KICAgICAgPHByaWNlPjQuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTExLTAyPC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QSBkZWVwIHNlYSBkaXZlciBmaW5kcyB0cnVlIGxvdmUgdHdlbnR5IA0KICAgICAgdGhvdXNhbmQgbGVhZ3VlcyBiZW5lYXRoIHRoZSBzZWEuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwOCI+DQogICAgICA8YXV0aG9yPktub3JyLCBTdGVmYW48L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5DcmVlcHkgQ3Jhd2xpZXM8L3RpdGxlPg0KICAgICAgPGdlbnJlPkhvcnJvcjwvZ2VucmU+DQogICAgICA8cHJpY2U+NC45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDAtMTItMDY8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5BbiBhbnRob2xvZ3kgb2YgaG9ycm9yIHN0b3JpZXMgYWJvdXQgcm9hY2hlcywNCiAgICAgIGNlbnRpcGVkZXMsIHNjb3JwaW9ucyAgYW5kIG90aGVyIGluc2VjdHMuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwOSI+DQogICAgICA8YXV0aG9yPktyZXNzLCBQZXRlcjwvYXV0aG9yPg0KICAgICAgPHRpdGxlPlBhcmFkb3ggTG9zdDwvdGl0bGU+DQogICAgICA8Z2VucmU+U2NpZW5jZSBGaWN0aW9uPC9nZW5yZT4NCiAgICAgIDxwcmljZT42Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMS0wMjwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPkFmdGVyIGFuIGluYWR2ZXJ0YW50IHRyaXAgdGhyb3VnaCBhIEhlaXNlbmJlcmcNCiAgICAgIFVuY2VydGFpbnR5IERldmljZSwgSmFtZXMgU2Fsd2F5IGRpc2NvdmVycyB0aGUgcHJvYmxlbXMgDQogICAgICBvZiBiZWluZyBxdWFudHVtLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMTAiPg0KICAgICAgPGF1dGhvcj5PJ0JyaWVuLCBUaW08L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5NaWNyb3NvZnQgLk5FVDogVGhlIFByb2dyYW1taW5nIEJpYmxlPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Db21wdXRlcjwvZ2VucmU+DQogICAgICA8cHJpY2U+MzYuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEyLTA5PC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+TWljcm9zb2Z0J3MgLk5FVCBpbml0aWF0aXZlIGlzIGV4cGxvcmVkIGluIA0KICAgICAgZGV0YWlsIGluIHRoaXMgZGVlcCBwcm9ncmFtbWVyJ3MgcmVmZXJlbmNlLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMTEiPg0KICAgICAgPGF1dGhvcj5PJ0JyaWVuLCBUaW08L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5NU1hNTDM6IEEgQ29tcHJlaGVuc2l2ZSBHdWlkZTwvdGl0bGU+DQogICAgICA8Z2VucmU+Q29tcHV0ZXI8L2dlbnJlPg0KICAgICAgPHByaWNlPjM2Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMi0wMTwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPlRoZSBNaWNyb3NvZnQgTVNYTUwzIHBhcnNlciBpcyBjb3ZlcmVkIGluIA0KICAgICAgZGV0YWlsLCB3aXRoIGF0dGVudGlvbiB0byBYTUwgRE9NIGludGVyZmFjZXMsIFhTTFQgcHJvY2Vzc2luZywgDQogICAgICBTQVggYW5kIG1vcmUuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazExMiI+DQogICAgICA8YXV0aG9yPkdhbG9zLCBNaWtlPC9hdXRob3I+DQogICAgICA8dGl0bGU+VmlzdWFsIFN0dWRpbyA3OiBBIENvbXByZWhlbnNpdmUgR3VpZGU8L3RpdGxlPg0KICAgICAgPGdlbnJlPkNvbXB1dGVyPC9nZW5yZT4NCiAgICAgIDxwcmljZT40OS45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDEtMDQtMTY8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA3IGlzIGV4cGxvcmVkIGluIGRlcHRoLA0KICAgICAgbG9va2luZyBhdCBob3cgVmlzdWFsIEJhc2ljLCBWaXN1YWwgQysrLCBDIywgYW5kIEFTUCsgYXJlIA0KICAgICAgaW50ZWdyYXRlZCBpbnRvIGEgY29tcHJlaGVuc2l2ZSBkZXZlbG9wbWVudCANCiAgICAgIGVudmlyb25tZW50LjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQo8L2NhdGFsb2c+",
"digestAlgorithm" : null,
"name" : "Books.xml"
}
}'
Second Request
curl --location --request POST 'http://localhost:8080/signDocument' \
--header 'Content-Type: application/json' \
--data-raw '{
"parameters" : {
"signingCertificate" : {
"encodedCertificate" : "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"
},
"certificateChain" : [ ],
"detachedContents" : null,
"asicContainerType" : null,
"signatureLevel" : "XAdES_BASELINE_B",
"signaturePackaging" : "ENVELOPED",
"signatureAlgorithm" : "RSA_SHA256",
"digestAlgorithm" : "SHA256",
"encryptionAlgorithm" : "RSA",
"referenceDigestAlgorithm" : null,
"contentTimestampParameters" : {
"digestAlgorithm" : "SHA256",
"canonicalizationMethod" : "http://www.w3.org/2001/10/xml-exc-c14n#"
},
"signatureTimestampParameters" : {
"digestAlgorithm" : "SHA256",
"canonicalizationMethod" : "http://www.w3.org/2001/10/xml-exc-c14n#"
},
"archiveTimestampParameters" : {
"digestAlgorithm" : "SHA256",
"canonicalizationMethod" : "http://www.w3.org/2001/10/xml-exc-c14n#"
},
"signWithExpiredCertificate" : false,
"generateTBSWithoutCertificate" : false,
"blevelParams" : {
"trustAnchorBPPolicy" : true,
"signingDate" : 1669156519000,
"claimedSignerRoles" : null,
"policyId" : null,
"policyQualifier" : null,
"policyDescription" : null,
"policyDigestAlgorithm" : null,
"policyDigestValue" : null,
"policySpuri" : null,
"commitmentTypeIndications" : null,
"signerLocationPostalAddress" : [ ],
"signerLocationPostalCode" : null,
"signerLocationLocality" : null,
"signerLocationStateOrProvince" : null,
"signerLocationCountry" : null,
"signerLocationStreet" : null
}
},
"signatureValue" : {
"algorithm" : "RSA_SHA256",
"value" : "MZ8NFMXPO3PuIvmwC2DpPP369SuhXkaETP9xEbAl3nPrks9RdOHgzhrv29z+YtGFOeX28gCkg+XiRFGCqxnxJ6TzfHBJbzt3c3C1cs9NKrR8wt4P4YYIL9Kw1qLHJax/MwrmKzJj3+GBdplXMjT9RfFIMp9V9EDpLN2XqHbZtOfPR8cBD8Yd8ZOwqHaw0ExvcER4ZB0WfrtMU67Xo/xTLrADYXE2yB5GK1qRjM12dArdvRKzjSqspzANxbX7p0/hNTHIIAWDxUFtcs0bJ6KIr3m71FKkx4Helzcy2VBFFEEuO2qBRh/9IwquRdPIrdnUaejcjIjR2105M0P0HfUXQw=="
},
"toSignDocument" : {
"bytes" : "PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8Y2F0YWxvZz4NCiAgIDxib29rIGlkPSJiazEwMSI+DQogICAgICA8YXV0aG9yPkdhbWJhcmRlbGxhLCBNYXR0aGV3PC9hdXRob3I+DQogICAgICA8dGl0bGU+WE1MIERldmVsb3BlcidzIEd1aWRlPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Db21wdXRlcjwvZ2VucmU+DQogICAgICA8cHJpY2U+NDQuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEwLTAxPC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QW4gaW4tZGVwdGggbG9vayBhdCBjcmVhdGluZyBhcHBsaWNhdGlvbnMgDQogICAgICB3aXRoIFhNTC48L2Rlc2NyaXB0aW9uPg0KICAgPC9ib29rPg0KICAgPGJvb2sgaWQ9ImJrMTAyIj4NCiAgICAgIDxhdXRob3I+UmFsbHMsIEtpbTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPk1pZG5pZ2h0IFJhaW48L3RpdGxlPg0KICAgICAgPGdlbnJlPkZhbnRhc3k8L2dlbnJlPg0KICAgICAgPHByaWNlPjUuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEyLTE2PC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QSBmb3JtZXIgYXJjaGl0ZWN0IGJhdHRsZXMgY29ycG9yYXRlIHpvbWJpZXMsIA0KICAgICAgYW4gZXZpbCBzb3JjZXJlc3MsIGFuZCBoZXIgb3duIGNoaWxkaG9vZCB0byBiZWNvbWUgcXVlZW4gDQogICAgICBvZiB0aGUgd29ybGQuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwMyI+DQogICAgICA8YXV0aG9yPkNvcmV0cywgRXZhPC9hdXRob3I+DQogICAgICA8dGl0bGU+TWFldmUgQXNjZW5kYW50PC90aXRsZT4NCiAgICAgIDxnZW5yZT5GYW50YXN5PC9nZW5yZT4NCiAgICAgIDxwcmljZT41Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMS0xNzwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPkFmdGVyIHRoZSBjb2xsYXBzZSBvZiBhIG5hbm90ZWNobm9sb2d5IA0KICAgICAgc29jaWV0eSBpbiBFbmdsYW5kLCB0aGUgeW91bmcgc3Vydml2b3JzIGxheSB0aGUgDQogICAgICBmb3VuZGF0aW9uIGZvciBhIG5ldyBzb2NpZXR5LjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMDQiPg0KICAgICAgPGF1dGhvcj5Db3JldHMsIEV2YTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPk9iZXJvbidzIExlZ2FjeTwvdGl0bGU+DQogICAgICA8Z2VucmU+RmFudGFzeTwvZ2VucmU+DQogICAgICA8cHJpY2U+NS45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDEtMDMtMTA8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5JbiBwb3N0LWFwb2NhbHlwc2UgRW5nbGFuZCwgdGhlIG15c3RlcmlvdXMgDQogICAgICBhZ2VudCBrbm93biBvbmx5IGFzIE9iZXJvbiBoZWxwcyB0byBjcmVhdGUgYSBuZXcgbGlmZSANCiAgICAgIGZvciB0aGUgaW5oYWJpdGFudHMgb2YgTG9uZG9uLiBTZXF1ZWwgdG8gTWFldmUgDQogICAgICBBc2NlbmRhbnQuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwNSI+DQogICAgICA8YXV0aG9yPkNvcmV0cywgRXZhPC9hdXRob3I+DQogICAgICA8dGl0bGU+VGhlIFN1bmRlcmVkIEdyYWlsPC90aXRsZT4NCiAgICAgIDxnZW5yZT5GYW50YXN5PC9nZW5yZT4NCiAgICAgIDxwcmljZT41Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMS0wOS0xMDwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPlRoZSB0d28gZGF1Z2h0ZXJzIG9mIE1hZXZlLCBoYWxmLXNpc3RlcnMsIA0KICAgICAgYmF0dGxlIG9uZSBhbm90aGVyIGZvciBjb250cm9sIG9mIEVuZ2xhbmQuIFNlcXVlbCB0byANCiAgICAgIE9iZXJvbidzIExlZ2FjeS48L2Rlc2NyaXB0aW9uPg0KICAgPC9ib29rPg0KICAgPGJvb2sgaWQ9ImJrMTA2Ij4NCiAgICAgIDxhdXRob3I+UmFuZGFsbCwgQ3ludGhpYTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPkxvdmVyIEJpcmRzPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Sb21hbmNlPC9nZW5yZT4NCiAgICAgIDxwcmljZT40Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0wOS0wMjwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPldoZW4gQ2FybGEgbWVldHMgUGF1bCBhdCBhbiBvcm5pdGhvbG9neSANCiAgICAgIGNvbmZlcmVuY2UsIHRlbXBlcnMgZmx5IGFzIGZlYXRoZXJzIGdldCBydWZmbGVkLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMDciPg0KICAgICAgPGF1dGhvcj5UaHVybWFuLCBQYXVsYTwvYXV0aG9yPg0KICAgICAgPHRpdGxlPlNwbGlzaCBTcGxhc2g8L3RpdGxlPg0KICAgICAgPGdlbnJlPlJvbWFuY2U8L2dlbnJlPg0KICAgICAgPHByaWNlPjQuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTExLTAyPC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+QSBkZWVwIHNlYSBkaXZlciBmaW5kcyB0cnVlIGxvdmUgdHdlbnR5IA0KICAgICAgdGhvdXNhbmQgbGVhZ3VlcyBiZW5lYXRoIHRoZSBzZWEuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwOCI+DQogICAgICA8YXV0aG9yPktub3JyLCBTdGVmYW48L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5DcmVlcHkgQ3Jhd2xpZXM8L3RpdGxlPg0KICAgICAgPGdlbnJlPkhvcnJvcjwvZ2VucmU+DQogICAgICA8cHJpY2U+NC45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDAtMTItMDY8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5BbiBhbnRob2xvZ3kgb2YgaG9ycm9yIHN0b3JpZXMgYWJvdXQgcm9hY2hlcywNCiAgICAgIGNlbnRpcGVkZXMsIHNjb3JwaW9ucyAgYW5kIG90aGVyIGluc2VjdHMuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazEwOSI+DQogICAgICA8YXV0aG9yPktyZXNzLCBQZXRlcjwvYXV0aG9yPg0KICAgICAgPHRpdGxlPlBhcmFkb3ggTG9zdDwvdGl0bGU+DQogICAgICA8Z2VucmU+U2NpZW5jZSBGaWN0aW9uPC9nZW5yZT4NCiAgICAgIDxwcmljZT42Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMS0wMjwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPkFmdGVyIGFuIGluYWR2ZXJ0YW50IHRyaXAgdGhyb3VnaCBhIEhlaXNlbmJlcmcNCiAgICAgIFVuY2VydGFpbnR5IERldmljZSwgSmFtZXMgU2Fsd2F5IGRpc2NvdmVycyB0aGUgcHJvYmxlbXMgDQogICAgICBvZiBiZWluZyBxdWFudHVtLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMTAiPg0KICAgICAgPGF1dGhvcj5PJ0JyaWVuLCBUaW08L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5NaWNyb3NvZnQgLk5FVDogVGhlIFByb2dyYW1taW5nIEJpYmxlPC90aXRsZT4NCiAgICAgIDxnZW5yZT5Db21wdXRlcjwvZ2VucmU+DQogICAgICA8cHJpY2U+MzYuOTU8L3ByaWNlPg0KICAgICAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEyLTA5PC9wdWJsaXNoX2RhdGU+DQogICAgICA8ZGVzY3JpcHRpb24+TWljcm9zb2Z0J3MgLk5FVCBpbml0aWF0aXZlIGlzIGV4cGxvcmVkIGluIA0KICAgICAgZGV0YWlsIGluIHRoaXMgZGVlcCBwcm9ncmFtbWVyJ3MgcmVmZXJlbmNlLjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQogICA8Ym9vayBpZD0iYmsxMTEiPg0KICAgICAgPGF1dGhvcj5PJ0JyaWVuLCBUaW08L2F1dGhvcj4NCiAgICAgIDx0aXRsZT5NU1hNTDM6IEEgQ29tcHJlaGVuc2l2ZSBHdWlkZTwvdGl0bGU+DQogICAgICA8Z2VucmU+Q29tcHV0ZXI8L2dlbnJlPg0KICAgICAgPHByaWNlPjM2Ljk1PC9wcmljZT4NCiAgICAgIDxwdWJsaXNoX2RhdGU+MjAwMC0xMi0wMTwvcHVibGlzaF9kYXRlPg0KICAgICAgPGRlc2NyaXB0aW9uPlRoZSBNaWNyb3NvZnQgTVNYTUwzIHBhcnNlciBpcyBjb3ZlcmVkIGluIA0KICAgICAgZGV0YWlsLCB3aXRoIGF0dGVudGlvbiB0byBYTUwgRE9NIGludGVyZmFjZXMsIFhTTFQgcHJvY2Vzc2luZywgDQogICAgICBTQVggYW5kIG1vcmUuPC9kZXNjcmlwdGlvbj4NCiAgIDwvYm9vaz4NCiAgIDxib29rIGlkPSJiazExMiI+DQogICAgICA8YXV0aG9yPkdhbG9zLCBNaWtlPC9hdXRob3I+DQogICAgICA8dGl0bGU+VmlzdWFsIFN0dWRpbyA3OiBBIENvbXByZWhlbnNpdmUgR3VpZGU8L3RpdGxlPg0KICAgICAgPGdlbnJlPkNvbXB1dGVyPC9nZW5yZT4NCiAgICAgIDxwcmljZT40OS45NTwvcHJpY2U+DQogICAgICA8cHVibGlzaF9kYXRlPjIwMDEtMDQtMTY8L3B1Ymxpc2hfZGF0ZT4NCiAgICAgIDxkZXNjcmlwdGlvbj5NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA3IGlzIGV4cGxvcmVkIGluIGRlcHRoLA0KICAgICAgbG9va2luZyBhdCBob3cgVmlzdWFsIEJhc2ljLCBWaXN1YWwgQysrLCBDIywgYW5kIEFTUCsgYXJlIA0KICAgICAgaW50ZWdyYXRlZCBpbnRvIGEgY29tcHJlaGVuc2l2ZSBkZXZlbG9wbWVudCANCiAgICAgIGVudmlyb25tZW50LjwvZGVzY3JpcHRpb24+DQogICA8L2Jvb2s+DQo8L2NhdGFsb2c+",
"digestAlgorithm" : null,
"name" : "Books.xml"
}
}
'