Compare commits

...

39 Commits

Author SHA1 Message Date
4910d69a40 Add define for reconnect timeout 2023-03-16 22:36:48 +05:00
5b8510353d Push changes for base file (pdf/xps/djvu module) 2023-03-12 10:26:49 +03:00
6df5bf924a Merge pull request #1154 from ONLYOFFICE/fix/fix-bugs-v7.3.3
Fix/fix bugs v7.3.3
2023-03-12 00:02:52 +03:00
8ca40a44ce fix bug #61586 2023-03-11 13:38:14 +03:00
3fa6152e69 fix bug #61588 2023-03-11 12:42:23 +03:00
8bd4dcece3 Merge pull request #1152 from ONLYOFFICE/fix/v7.3.3-fix-bugs
Fix/v7.3.3 fix bugs
2023-03-10 18:15:01 +03:00
7afe09ce09 fix bug #59365 2023-03-10 17:18:34 +03:00
3df0892752 Merge pull request #1153 from ONLYOFFICE/fix/bug61577
Fix bug #61577
2023-03-10 17:04:07 +03:00
deffa006b5 Fixed bug #61577 2023-03-10 17:02:48 +03:00
12326b3a4f fix bug #61456 2023-03-10 14:09:39 +03:00
ad72c997f2 fix bug #61459 2023-03-10 12:18:14 +03:00
30733dfc71 Merge pull request #1150 from ONLYOFFICE/fix/fix-bug
fix checker for binary
2023-03-07 16:41:05 +03:00
c252512786 fix checker for binary 2023-03-07 11:43:50 +03:00
03a276fd88 Merge pull request #1149 from ONLYOFFICE/fix/bug61475
Fix bug #61475
2023-03-06 20:29:44 +03:00
d20b9321d4 Merge pull request #1148 from ONLYOFFICE/fix/v7.3.3-fix-bugs
fix bug #61508
2023-03-06 20:23:34 +03:00
42a4f8c909 Fix bug #61475 2023-03-06 20:18:36 +03:00
22842c069a fix bug #61508 2023-03-06 18:50:21 +03:00
fd865782a8 fix bug #60339 2023-03-04 20:03:14 +03:00
f2533bc6a0 fix bug #60847 2023-03-03 14:58:26 +03:00
ce64eca658 . 2023-03-03 00:00:12 +03:00
8a0c070990 fix bug #61456 2023-03-02 23:57:22 +03:00
1d0bb53607 fix bug #61445 2023-03-02 16:04:56 +03:00
e83e025748 fix bug #61318 2023-03-02 14:25:08 +03:00
66ac071c58 fix bug #61412 2023-03-01 12:46:15 +03:00
cd8ce24a70 fix bug #61406 2023-02-28 20:00:50 +03:00
a7c70687c9 for bug #61375 2023-02-28 19:37:01 +03:00
5d0f0875be for bug #61375 2023-02-28 17:21:07 +03:00
365d8bf95a Add test for all systems 2023-02-28 16:29:40 +03:00
313af0b405 Merge pull request #1144 from ONLYOFFICE/fix/bug61383
Fix bug #61383
2023-02-28 14:18:08 +03:00
4aa56f8aa0 For bug #61383 2023-02-28 13:22:12 +03:00
ffe2806bc8 fix bug #61353 2023-02-28 12:48:47 +03:00
7dcbd57aa7 Fix bug #61383 2023-02-28 12:44:41 +03:00
cdb72bab80 fix bug #61375 2023-02-27 18:05:19 +03:00
b15aff55d1 Refactoring socketio websocket realization 2023-02-26 12:42:33 +05:00
d3423f93eb Fix build 2023-02-24 13:55:59 +03:00
0f9cc64520 Fix bug 61302 2023-02-23 21:45:50 +03:00
2309f915b4 Fix bug 61296 2023-02-23 21:42:12 +03:00
60bae43495 Fix bug #61321 2023-02-22 10:08:10 +03:00
77297aedc8 Remove unused code 2023-02-22 09:42:47 +03:00
1098 changed files with 1715 additions and 299259 deletions

View File

@ -1282,7 +1282,10 @@ namespace NSCSS
Scale(nValue, enScalingDirection);
sValueString += std::to_wstring(nValue);
sValueString += std::to_wstring(nValue);
if (!iswdigit(sValueTemp.back()))
sValueString += sValueTemp.back();
}
else
sValueString += sValueTemp;

View File

@ -2023,7 +2023,7 @@ namespace NSCSS
if (sValue.empty())
return BorderSide();
const std::vector<std::wstring> arValues = NS_STATIC_FUNCTIONS::GetWordsW(sValue, L" ");
const std::vector<std::wstring> arValues = NS_STATIC_FUNCTIONS::GetWordsW(NS_STATIC_FUNCTIONS::NormalizeRGB(sValue), L" ");
BorderSide oBorderSide;
for (std::wstring sValue : arValues)
{

View File

@ -315,6 +315,26 @@ namespace NSCSS
return sValue.empty() ? false : std::all_of(sValue.begin(), sValue.end(), [] (const wchar_t& cChar) { return iswdigit(cChar); });
}
inline std::wstring NormalizeRGB(const std::wstring& wsValue)
{
std::wstring wsNewValue = wsValue;
size_t unBegin = 0, unEnd;
while (std::wstring::npos != (unBegin = wsNewValue.find(L"rgb(", unBegin)))
{
unEnd = wsNewValue.find(L")", unBegin);
while ((unBegin = wsNewValue.find(L" ", unBegin)) != std::wstring::npos && unBegin < unEnd)
{
wsNewValue.replace(unBegin, 1, L",");
++unBegin;
}
}
return wsNewValue;
}
inline std::wstring ConvertRgbToHex(const std::wstring& sRgbValue)
{
size_t posFirst = sRgbValue.find_first_of(L"01234567890");

View File

@ -17,12 +17,12 @@ if not base.is_dir("gumbo-parser"):
base.replaceInFile(base_directory + "/gumbo-parser/src/tag.c", "isspace(*c)", "isspace((unsigned char)*c)")
if not base.is_dir("katana-parser"):
base.cmd("git", ["clone", "https://github.com/hackers-painters/katana-parser.git"])
base.cmd_in_dir("katana-parser", "git", ["checkout", "499118d32c387a893fdc9dda2cb95eee524bdb9b"])
base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
# fix katana
base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool katana_is_html_space(char c);", "static inline bool2 katana_is_html_space(char c);")
base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "inline bool katana_is_html_space(char c)", "static inline bool katana_is_html_space(char c)")
base.replaceInFile(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool2 katana_is_html_space(char c);", "static inline bool katana_is_html_space(char c);")
base.replaceInFile(base_directory + "/katana-parser/src/parser.c", "katanaget_text(parser->scanner)", "/*katanaget_text(parser->scanner)*/\"error\"")
base.replaceInFile(base_directory + "/katana-parser/src/parser.c", "#define KATANA_PARSER_STRING(literal) (KatanaParserString){", "#define KATANA_PARSER_STRING(literal) {")

File diff suppressed because it is too large Load Diff

View File

@ -537,16 +537,27 @@ std::vector<uint64> AllocTable::follow( uint64 start )
if( start >= count() ) return chain;
uint64 p = start;
while( p < count() )
{
if( p == (uint64)Eof ) break;
if( p == (uint64)Bat ) break;
if( p == (uint64)MetaBat ) break;
if( p >= count() ) break;
chain.push_back( p );
if( data[p] >= count() ) break;
p = data[ p ];
}
std::map<uint64, char> used;
used.insert(std::make_pair(start, (char)0));
while (p < count())
{
if (p == (uint64)Eof) break;
if (p == (uint64)Bat) break;
if (p == (uint64)MetaBat) break;
if (p >= count()) break;
chain.push_back(p);
if (data[p] >= count()) break;
if (used.find(data[p]) != used.end())
{
//cycle
break;
}
p = data[p];
used.insert(std::make_pair(p, (char)0));
}
return chain;
}

View File

@ -49,6 +49,7 @@ namespace NSNetwork
virtual void send(const std::string& message) = 0;
virtual void close() = 0;
virtual void setUrl(const std::string& url) = 0;
virtual bool setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax) { return false; }
virtual ~IWebSocket() {}
};

View File

@ -64,5 +64,11 @@ namespace NSNetwork
{
delete m_internal;
}
bool CIOWebSocket::setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax)
{
m_internal->setReconnectInfo(attemtCount, delay, delayMax);
return true;
}
}
}

View File

@ -46,20 +46,24 @@ namespace NSNetwork
protected:
CIOWebSocket* m_base;
NSCriticalSection::CRITICAL_SECTION m_oCS;
NSCriticalSection::CRITICAL_SECTION m_oCS_Events;
public:
CIOWebSocket_private(CIOWebSocket* base)
{
m_base = base;
m_oCS.InitializeCriticalSection();
m_oCS_Events.InitializeCriticalSection();
}
virtual ~CIOWebSocket_private()
{
m_oCS_Events.DeleteCriticalSection();
m_oCS.DeleteCriticalSection();
}
virtual void open(const std::map<std::string, std::string>& query) = 0;
virtual void send(const std::string& message) = 0;
virtual void close() = 0;
virtual void setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax) = 0;
};
class CIOWebSocket: public CWebWorkerBase
@ -75,6 +79,7 @@ namespace NSNetwork
virtual void open(const std::map<std::string, std::string>& query) override;
virtual void send(const std::string& message) override;
virtual void close() override;
virtual bool setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax);
friend class CIOWebSocket_private;
friend class CIOWebSocket_private_tls;

View File

@ -35,6 +35,8 @@
#include <iostream>
#include "../../../../3dParty/socketio/socket.io-client-cpp/src/internal/sio_packet.h"
#include "../../../../3dParty/socketio/socket.io-client-cpp/src/sio_client.h"
#include <memory>
#include "../../../../../DesktopEditor/graphics/BaseThread.h"
namespace NSNetwork
{
@ -43,38 +45,56 @@ namespace NSNetwork
class CIOWebSocket_private_tls : public CIOWebSocket_private
{
public:
sio::client m_socket;
std::shared_ptr<sio::client> m_socket;
// проблема закрытия сокета, пока он не приконнектился
bool m_connecting_in_process;
bool m_closing_in_progress;
public:
CIOWebSocket_private_tls(CIOWebSocket* base) : CIOWebSocket_private(base)
{
m_connecting_in_process = false;
m_closing_in_progress = false;
m_base = base;
}
~CIOWebSocket_private_tls()
{
m_socket.close();
close();
}
public:
void event_onConnected()
{
m_base->listener->onOpen();
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onOpen();
}
void event_onClose(sio::client::close_reason const& reason)
{
m_base->listener->onClose(0, "");
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onClose(0, "");
}
void event_onFail()
{
m_base->listener->onError("");
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onError("");
}
public:
virtual void open(const std::map<std::string, std::string>& query) override
{
m_socket.set_open_listener (std::bind(&CIOWebSocket_private_tls::event_onConnected, this));
m_socket.set_close_listener(std::bind(&CIOWebSocket_private_tls::event_onClose, this, std::placeholders::_1));
m_socket.set_fail_listener (std::bind(&CIOWebSocket_private_tls::event_onFail, this));
m_socket = std::make_shared<sio::client>();
m_socket->set_open_listener (std::bind(&CIOWebSocket_private_tls::event_onConnected, this));
m_socket->set_close_listener(std::bind(&CIOWebSocket_private_tls::event_onClose, this, std::placeholders::_1));
m_socket->set_fail_listener (std::bind(&CIOWebSocket_private_tls::event_onFail, this));
sio::message::ptr objAuth = sio::object_message::create();
//std::string sAuth;
@ -89,10 +109,14 @@ namespace NSNetwork
}
//webSocket.connect(url, queryDst, sio::string_message::create(sAuth));
m_socket.connect(m_base->url, queryDst, objAuth);
m_connecting_in_process = true;
m_socket->connect(m_base->url, queryDst, objAuth);
m_socket->socket()->on("message", [&](sio::event& event){
CTemporaryCS oCS(&m_oCS_Events);
if (m_closing_in_progress)
return;
m_socket.socket()->on("message", [&](sio::event& event){
CTemporaryCS oCS(&m_oCS);
const sio::message::ptr& message = event.get_message();
if (!message)
return;
@ -184,19 +208,34 @@ namespace NSNetwork
manager.put_payload("42" + message_str);
manager.reset();
m_socket.socket()->emit("message", message);
m_socket->socket()->emit("message", message);
}
else
{
m_socket.socket()->emit("message", sio::string_message::create(message_str));
m_socket->socket()->emit("message", sio::string_message::create(message_str));
}
}
virtual void close() override
{
//CTemporaryCS (&m_internal->m_oCS);
m_socket.socket()->off_all();
m_socket.sync_close();
CTemporaryCS oCS(&m_oCS);
m_oCS_Events.Enter();
m_closing_in_progress = true;
m_oCS_Events.Leave();
// https://github.com/socketio/socket.io-client-cpp/issues/254
while (m_connecting_in_process)
NSThreads::Sleep(50);
m_socket.reset();
}
virtual void setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax) override
{
m_socket->set_reconnect_attempts(attemtCount);
m_socket->set_reconnect_delay(delay);
m_socket->set_reconnect_delay_max(delayMax);
}
};
}

View File

@ -39,6 +39,8 @@
#include <iostream>
#include "../../../../3dParty/socketio/socket.io-client-cpp/src_no_tls/internal/sio_packet.h"
#include "../../../../3dParty/socketio/socket.io-client-cpp/src_no_tls/sio_client.h"
#include <memory>
#include "../../../../../DesktopEditor/graphics/BaseThread.h"
namespace NSNetwork
{
@ -47,38 +49,56 @@ namespace NSNetwork
class CIOWebSocket_private_no_tls : public CIOWebSocket_private
{
public:
sio_no_tls::client m_socket;
std::shared_ptr<sio_no_tls::client> m_socket;
// проблема закрытия сокета, пока он не приконнектился
bool m_connecting_in_process;
bool m_closing_in_progress;
public:
CIOWebSocket_private_no_tls(CIOWebSocket* base) : CIOWebSocket_private(base)
{
m_connecting_in_process = false;
m_closing_in_progress = false;
m_base = base;
}
~CIOWebSocket_private_no_tls()
{
m_socket.close();
close();
}
public:
void event_onConnected()
{
m_base->listener->onOpen();
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onOpen();
}
void event_onClose(sio_no_tls::client::close_reason const& reason)
{
m_base->listener->onClose(0, "");
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onClose(0, "");
}
void event_onFail()
{
m_base->listener->onError("");
CTemporaryCS oCS(&m_oCS_Events);
m_connecting_in_process = false;
if (!m_closing_in_progress)
m_base->listener->onError("");
}
public:
virtual void open(const std::map<std::string, std::string>& query) override
{
m_socket.set_open_listener (std::bind(&CIOWebSocket_private_no_tls::event_onConnected, this));
m_socket.set_close_listener(std::bind(&CIOWebSocket_private_no_tls::event_onClose, this, std::placeholders::_1));
m_socket.set_fail_listener (std::bind(&CIOWebSocket_private_no_tls::event_onFail, this));
m_socket = std::make_shared<sio_no_tls::client>();
m_socket->set_open_listener (std::bind(&CIOWebSocket_private_no_tls::event_onConnected, this));
m_socket->set_close_listener(std::bind(&CIOWebSocket_private_no_tls::event_onClose, this, std::placeholders::_1));
m_socket->set_fail_listener (std::bind(&CIOWebSocket_private_no_tls::event_onFail, this));
sio_no_tls::message::ptr objAuth = sio_no_tls::object_message::create();
//std::string sAuth;
@ -93,10 +113,14 @@ namespace NSNetwork
}
//webSocket.connect(url, queryDst, sio_no_tls::string_message::create(sAuth));
m_socket.connect(m_base->url, queryDst, objAuth);
m_connecting_in_process = true;
m_socket->connect(m_base->url, queryDst, objAuth);
m_socket->socket()->on("message", [&](sio_no_tls::event& event){
CTemporaryCS oCS(&m_oCS_Events);
if (m_closing_in_progress)
return;
m_socket.socket()->on("message", [&](sio_no_tls::event& event){
CTemporaryCS oCS(&m_oCS);
const sio_no_tls::message::ptr& message = event.get_message();
if (!message)
return;
@ -188,19 +212,34 @@ namespace NSNetwork
manager.put_payload("42" + message_str);
manager.reset();
m_socket.socket()->emit("message", message);
m_socket->socket()->emit("message", message);
}
else
{
m_socket.socket()->emit("message", sio_no_tls::string_message::create(message_str));
m_socket->socket()->emit("message", sio_no_tls::string_message::create(message_str));
}
}
virtual void close() override
{
//CTemporaryCS (&m_internal->m_oCS);
m_socket.socket()->off_all();
m_socket.sync_close();
CTemporaryCS oCS(&m_oCS);
m_oCS_Events.Enter();
m_closing_in_progress = true;
m_oCS_Events.Leave();
// https://github.com/socketio/socket.io-client-cpp/issues/254
while (m_connecting_in_process)
NSThreads::Sleep(50);
m_socket.reset();
}
virtual void setReconnectInfo(const int& attemtCount, const int& delay, const int& delayMax) override
{
m_socket->set_reconnect_attempts(attemtCount);
m_socket->set_reconnect_delay(delay);
m_socket->set_reconnect_delay_max(delayMax);
}
};
}

View File

@ -59,7 +59,8 @@ libsocketio {
_WEBSOCKETPP_CPP11_CHRONO_ \
\
"SIO_TLS=1" \
"SIO_TLS_NO=0"
"SIO_TLS_NO=0" \
"PING_TIMEOUT_INTERVAL=20000"
include($$PWD/../../3dParty/boost/boost.pri)

View File

@ -515,26 +515,26 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & _fileName)
bEmptyFile = (dwReadBytes < 1);
if (isOOXFlatFormatFile(buffer, sizeRead))
if (isBinaryDoctFormatFile(buffer, sizeRead)) // min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_WORD;
}
else if (isBinaryXlstFormatFile(buffer, sizeRead))// min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET;
}
else if (isBinaryPpttFormatFile(buffer, sizeRead))// min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION;
}
else if (isOOXFlatFormatFile(buffer, sizeRead))
{
//nFileType;
}
else if ( isRtfFormatFile(buffer,sizeRead) ) // min size - 5
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF;
}
else if ( isBinaryDoctFormatFile(buffer,sizeRead) ) // min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_WORD;
}
else if ( isBinaryXlstFormatFile(buffer,sizeRead) )// min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET;
}
else if ( isBinaryPpttFormatFile(buffer,sizeRead) )// min size - 4
{
nFileType = AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION;
}
}
else if (isPdfFormatFile(buffer,sizeRead, sDocumentID) )// min size - 5
{
nFileType = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF;

View File

@ -47,7 +47,7 @@ using namespace CFCPP;
CompoundFile::CompoundFile() : _impl(new CFCPP::CompoundFile_impl())
{
}
CompoundFile::CompoundFile(const std::wstring &fileName, CFSUpdateMode updateMode, CFSConfiguration configParameters) :
CompoundFile::CompoundFile(const std::wstring &fileName, CFSUpdateMode updateMode, int configParameters) :
_impl(new CFCPP::CompoundFile_impl(fileName, updateMode, configParameters))
{
}
@ -115,7 +115,7 @@ CompoundFile_impl::CompoundFile_impl() :
CompoundFile_impl(CFSVersion::Ver_3, CFSConfiguration::Default)
{}
CompoundFile_impl::CompoundFile_impl(const std::wstring &fileName, CFSUpdateMode updateMode, CFSConfiguration configParameters)
CompoundFile_impl::CompoundFile_impl(const std::wstring &fileName, CFSUpdateMode updateMode, int configParameters)
{
configuration = configParameters;
isValidationExceptionEnabled = !(configParameters & CFSConfiguration::NoValidationException);
@ -1796,7 +1796,6 @@ _INT32 CompoundFile_impl::GetSectorSize()
{
return 2 << (header->sectorShift - 1);
}
void CompoundFile_impl::Dispose(bool disposing)
{
try

View File

@ -56,7 +56,7 @@ class CompoundFile_impl;
class CompoundFile
{
public:
CompoundFile(const std::wstring &fileName, CFSUpdateMode updateMode, CFSConfiguration configParameters = Default);
CompoundFile(const std::wstring &fileName, CFSUpdateMode updateMode, int configParameters = Default);
CompoundFile(CFSVersion cfsVersion, CFSConfiguration configFlags);
CompoundFile(const std::wstring &fileName);
CompoundFile(Stream stream);

View File

@ -49,7 +49,7 @@ class DirectoryEntry;
class CompoundFile_impl
{
public:
CompoundFile_impl(const std::wstring &fileName, CFSUpdateMode updateMode, CFSConfiguration configParameters = Default);
CompoundFile_impl(const std::wstring &fileName, CFSUpdateMode updateMode, int configParameters = Default);
CompoundFile_impl(CFSVersion cfsVersion, CFSConfiguration configFlags);
CompoundFile_impl(const std::wstring &fileName);
CompoundFile_impl(Stream stream);
@ -62,7 +62,6 @@ public:
void Save(std::wstring wFileName);
void Save(Stream stream);
void Commit(bool releaseMemory = false);
bool HasSourceStream() const;
bool ValidationExceptionEnabled() const;
@ -140,7 +139,7 @@ private:
CFSVersion getVersion() const;
public:
CFSConfiguration configuration = Default;
int configuration = Default;
std::unique_ptr<Header> header;
Stream sourceStream;

View File

@ -810,6 +810,7 @@
#define ASC_COAUTH_EVENT_TYPE_INSERT_URL_IMAGE 21000
#define ASC_COAUTH_EVENT_TYPE_LOAD_URL_IMAGE 21001
#define ASC_COAUTH_EVENT_TYPE_REPLACE_URL_IMAGE 21002
#define ASC_COAUTH_EVENT_TYPE_INSERT_SCREEN_URL_IMAGE 21003
#define ASC_MENU_EVENT_TYPE_ADVANCED_OPTIONS 22000
#define ASC_MENU_EVENT_TYPE_SET_PASSWORD 22001

View File

@ -178,6 +178,13 @@
// else - error
return error;
};
CFile.prototype["getFileAsBase64"] = function()
{
if (0 >= this.stream)
return "";
return new Uint8Array(Module["HEAP8"].buffer, this.stream, this.stream_size);
};
CFile.prototype["isNeedPassword"] = function()
{
return this._isNeedPassword;

View File

@ -102,7 +102,9 @@ namespace MetaFile
this->Close();
NSFile::CFileBinary oFile;
oFile.OpenFile(wsFilePath);
if (!oFile.OpenFile(wsFilePath))
return false;
int lFileSize = oFile.GetFileSize();
m_bIsExternalBuffer = false;

View File

@ -71,12 +71,12 @@
#include "CEmfParser.h"
#include "../../Wmf/WmfFile.h"
#include "../../Wmf/WmfInterpretator/CWmfInterpretatorSvg.h""
#include "../../Wmf/WmfInterpretator/CWmfInterpretatorSvg.h"
#include "../EmfInterpretator/CEmfInterpretator.h"
#include "../EmfInterpretator/CEmfInterpretatorSvg.h"
#include "../EmfInterpretator/CEmfInterpretatorArray.h"
#include "../EmfInterpretator/CEmfInterpretatorRender.h""
#include "../EmfInterpretator/CEmfInterpretatorRender.h"
#ifdef METAFILE_SUPPORT_WMF_EMF_XML
#include "../EmfInterpretator/CEmfInterpretatorXml.h"
@ -377,7 +377,7 @@ namespace MetaFile
m_oStream >> unTotalSize;
pImage->SetSizeData(unTotalSize - 16);
pImage->SetSize(unTotalSize - 16);
ReadImage(*pImage, false);
@ -441,7 +441,7 @@ namespace MetaFile
if (unMetafileSize < m_ulRecordSize - 16)
unMetafileSize = m_ulRecordSize - 16;
oImage.SetSizeData(unMetafileSize);
oImage.SetSize(unMetafileSize);
if (!bReadData) return;
@ -957,10 +957,11 @@ namespace MetaFile
m_oStream >> unPathPointFlags;
CEmfPlusPath *pPath = new CEmfPlusPath;
if ((unPathPointFlags >>(20)) & 1 )
{
//Определен флаг R (С игнорируется)
return NULL;
}
else if ((unPathPointFlags >>(14)) & 1 )
{
@ -968,11 +969,11 @@ namespace MetaFile
std::vector<TEmfPlusPoint> arPoints = ReadPoints<TEmfPlusPoint>(unPathPointCount);
std::vector<char> arPointTypes = ReadPointTypes(unPathPointCount);
CEmfPlusPath *pPath = new CEmfPlusPath();
pPath->MoveTo(arPoints[0].x, arPoints[0].y);
for (unsigned int unIndex = 0; unIndex < unPathPointCount; ++unIndex)
for (unsigned int unIndex = 1; unIndex < unPathPointCount; ++unIndex)
{
switch (ExpressValue(arPointTypes[unIndex], 0, 3))
switch (arPointTypes[unIndex] & 0xf)
{
case PathPointTypeStart: pPath->MoveTo(arPoints[unIndex].x, arPoints[unIndex].y); break;
case PathPointTypeLine: pPath->LineTo(arPoints[unIndex].x, arPoints[unIndex].y); break;
@ -981,36 +982,32 @@ namespace MetaFile
if (unIndex + 2 >= unPathPointCount) break;
pPath->CurveTo(arPoints[unIndex + 0].x, arPoints[unIndex + 0].y,
arPoints[unIndex + 1].x, arPoints[unIndex + 1].y,
arPoints[unIndex + 2].x, arPoints[unIndex + 2].y);
arPoints[unIndex + 1].x, arPoints[unIndex + 1].y,
arPoints[unIndex + 2].x, arPoints[unIndex + 2].y);
unIndex += 2;
break;
}
}
if (ExpressValue(arPointTypes[unIndex], 4, 7) == 0x08)
{
if ((((unsigned int)(arPointTypes[unIndex])) & 0xf0) == 0x80)
pPath->Close();
}
}
unsigned int unSkip = 4 - (12 + 5 * unPathPointCount) % 4;
if (unSkip < 4)
m_oStream.Skip(unSkip);
return pPath;
}
else
{
std::vector<TEmfPlusPointF> arPoints = ReadPoints<TEmfPlusPointF>(unPathPointCount);
std::vector<char> arPointTypes = ReadPointTypes(unPathPointCount);
CEmfPlusPath *pPath = new CEmfPlusPath();
pPath->MoveTo(arPoints[0].X, arPoints[0].Y);
for (unsigned int unIndex = 0; unIndex < unPathPointCount; ++unIndex)
for (unsigned int unIndex = 1; unIndex < unPathPointCount; ++unIndex)
{
switch (ExpressValue(arPointTypes[unIndex], 0, 3))
switch (arPointTypes[unIndex] & 0xf)
{
case PathPointTypeStart: pPath->MoveTo(arPoints[unIndex].X, arPoints[unIndex].Y); break;
case PathPointTypeLine: pPath->LineTo(arPoints[unIndex].X, arPoints[unIndex].Y); break;
@ -1019,29 +1016,53 @@ namespace MetaFile
if (unIndex + 2 >= unPathPointCount) break;
pPath->CurveTo(arPoints[unIndex + 0].X, arPoints[unIndex + 0].Y,
arPoints[unIndex + 1].X, arPoints[unIndex + 1].Y,
arPoints[unIndex + 2].X, arPoints[unIndex + 2].Y);
arPoints[unIndex + 1].X, arPoints[unIndex + 1].Y,
arPoints[unIndex + 2].X, arPoints[unIndex + 2].Y);
unIndex += 2;
break;
}
}
if (ExpressValue(arPointTypes[unIndex], 4, 7) == 0x08)
{
if ((((unsigned int)(arPointTypes[unIndex])) & 0xf0) == 0x80)
pPath->Close();
}
}
unsigned int unSkip = 4 - (12 + 9 * unPathPointCount) % 4;
if (unSkip < 4)
m_oStream.Skip(unSkip);
return pPath;
//Оба флага не определены
}
//TODO: реализовать
return pPath;
}
void CEmfPlusParser::ReadBufferPath(CEmfPlusBuffer *pDataPath)
{
if (NULL == pDataPath)
return;
unsigned int unTotalSize;
m_oStream >> unTotalSize;
if (0 == pDataPath->GetSize())
pDataPath->SetSize(unTotalSize - 8);
else
m_oStream.Skip(4);
pDataPath->AddData(m_oStream.GetCurPtr(), m_ulRecordSize - 8);
m_oStream.Skip(m_ulRecordSize - 8);
}
CEmfPlusBuffer *CEmfPlusParser::GetBuffer(unsigned int unPathIndex)
{
EmfPlusObjects::const_iterator oFoundElement = m_mObjects.find(unPathIndex);
if (m_mObjects.end() != oFoundElement && oFoundElement->second->GetObjectType() == ObjectTypeBuffer)
return (CEmfPlusBuffer*)oFoundElement->second;
return NULL;
}
CEmfPlusPath *CEmfPlusParser::GetPath(unsigned int unPathIndex)
@ -2872,9 +2893,42 @@ namespace MetaFile
{
LOGGING(L"Object Path with index: " << shObjectIndex)
CEmfPlusPath* pPath = ReadPath();
if ((unShFlags >>(15)) & 1)
{
CEmfPlusBuffer *pPathBuffer = GetBuffer(shObjectIndex);
bool bRegister = true;
RegisterObject(pPath, shObjectIndex);
if (NULL == pPathBuffer)
pPathBuffer = new CEmfPlusBuffer();
else
bRegister = false;
ReadBufferPath(pPathBuffer);
if (bRegister)
RegisterObject(pPathBuffer, shObjectIndex);
if (0 == pPathBuffer->GetUnreadSize())
{
CDataStream oTempStream = m_oStream;
BYTE* pTempPathBuffer;
unsigned int unPathBufferSize;
pPathBuffer->GetData(pTempPathBuffer, unPathBufferSize);
m_oStream.SetStream(pTempPathBuffer, unPathBufferSize);
CEmfPlusPath* pPath = ReadPath();
RegisterObject(pPath, shObjectIndex);
m_oStream = oTempStream;
}
}
else
{
CEmfPlusPath* pPath = ReadPath();
RegisterObject(pPath, shObjectIndex);
}
break;
}

View File

@ -53,6 +53,9 @@ namespace MetaFile
CEmfPlusPath* ReadPath();
CEmfPlusPath* GetPath(unsigned int unPathIndex);
void ReadBufferPath(CEmfPlusBuffer* pDataPath);
CEmfPlusBuffer* GetBuffer(unsigned int unPathIndex);
CEmfPlusRegion* ReadRegion();
CEmfPlusRegionNode* ReadRegionNode(unsigned int& unIndex);
CEmfPlusRegionNodePath* ReadRegionNodePath(unsigned int& unIndex);

View File

@ -28,7 +28,8 @@ namespace MetaFile
ObjectTypeFont = 0x06,
ObjectTypeStringFormat = 0x07,
ObjectTypeImageAttributes = 0x08,
ObjectTypeCustomLineCap = 0x09
ObjectTypeCustomLineCap = 0x09,
ObjectTypeBuffer = 0xff
} EEmfPlusObjectType;
#define CEmfPlusObjectBase CEmfObjectBase
@ -404,6 +405,69 @@ namespace MetaFile
PathPointTypeBezier = 0x03
} EEmfPlusPathPointType;
class CEmfPlusBuffer : public CEmfPlusObject
{
public:
CEmfPlusBuffer() : m_pBuffer(NULL), m_ulPosition(0), m_ulFullSize(0)
{}
~CEmfPlusBuffer()
{
if (NULL != m_pBuffer)
delete m_pBuffer;
}
virtual EEmfPlusObjectType GetObjectType() override
{
return ObjectTypeBuffer;
}
void SetSize(unsigned int unSize)
{
if (NULL != m_pBuffer)
delete [] m_pBuffer;
m_pBuffer = new BYTE[unSize];
m_ulFullSize = unSize;
}
unsigned int GetSize() const
{
return m_ulFullSize;
}
void AddData(BYTE *pData, unsigned int unSize)
{
if (NULL == m_pBuffer && 0 == m_ulFullSize && 0 < unSize)
SetSize(unSize);
else if (0 == m_ulFullSize)
return;
if (unSize + m_ulPosition > m_ulFullSize)
unSize = m_ulFullSize - m_ulPosition;
memcpy(m_pBuffer + m_ulPosition * sizeof (BYTE), pData, unSize);
m_ulPosition += unSize;
}
unsigned int GetUnreadSize() const
{
return (m_ulFullSize - m_ulPosition);
}
void GetData(BYTE*& pBuffer, unsigned int& unSize) const
{
pBuffer = m_pBuffer;
unSize = m_ulPosition;
}
private:
BYTE* m_pBuffer;
ULONG m_ulPosition;
ULONG m_ulFullSize;
friend class CEmfPlusImage;
};
class CEmfPlusPath : public CEmfPlusObject, public CEmfPath
{
public:
@ -492,17 +556,12 @@ namespace MetaFile
// BitmapDataTypeCompressed = 0x00000001
// } BitmapDataType;
class CEmfPlusImage : public CEmfPlusObject
class CEmfPlusImage : public CEmfPlusBuffer
{
public:
CEmfPlusImage() : CEmfPlusObject(), m_pImageBuffer(NULL), m_ulPosition(0),
m_ulFullSize(0), m_eImageDataType(ImageDataTypeUnknown),
CEmfPlusImage() : m_eImageDataType(ImageDataTypeUnknown),
m_eMetafileDataType(MetafileDataTypeUnknown),
m_unWidth(0), m_unHeight(0){};
virtual ~CEmfPlusImage()
{
RELEASEARRAYOBJECTS(m_pImageBuffer);
};
virtual EEmfPlusObjectType GetObjectType() override
{
@ -540,15 +599,6 @@ namespace MetaFile
return m_eMetafileDataType;
}
void SetSizeData(unsigned int unSize)
{
if (NULL != m_pImageBuffer)
delete [] m_pImageBuffer;
m_pImageBuffer = new BYTE[unSize];
m_ulFullSize = unSize;
}
void SetImageSize(unsigned int unWidth, unsigned int unHeight)
{
m_unWidth = unWidth;
@ -560,37 +610,7 @@ namespace MetaFile
unWidth = m_unWidth;
unHeight = m_unHeight;
}
unsigned int GetUnreadSize() const
{
return (m_ulFullSize - m_ulPosition);
}
void AddData(BYTE *pData, unsigned int unSize)
{
if (NULL == m_pImageBuffer && 0 == m_ulFullSize && 0 < unSize)
SetSizeData(unSize);
else if (0 == m_ulFullSize)
return;
if (unSize + m_ulPosition > m_ulFullSize)
unSize = m_ulFullSize - m_ulPosition;
memcpy(m_pImageBuffer + m_ulPosition * sizeof (BYTE), pData, unSize);
m_ulPosition += unSize;
}
void GetData(BYTE*& pBuffer, unsigned int& unSize) const
{
pBuffer = m_pImageBuffer;
unSize = m_ulPosition;
}
private:
BYTE* m_pImageBuffer;
ULONG m_ulPosition;
ULONG m_ulFullSize;
EEmfPlusImageDataType m_eImageDataType;
EEmfPlusMetafileDataType m_eMetafileDataType;

View File

@ -1,8 +0,0 @@
Aleksey Sanin <aleksey@aleksey.com>
Windows port: Igor Zlatkovic <igor@stud.fh-frankfurt.de>
Debian port: John Belmonte <jvb@prairienet.org>
xmlsec-nss: Tej Arora <tej@netscape.com>, AOL Inc.
xmlsec-mscrypto: Wouter Ketting <wsh@xs4all.nl>, Cordys R&D BV
GOST support: Dmitry Belyavsky <beldmit@cryptocom.ru>, Cryptocom LTD (http://www.cryptocom.ru)

View File

@ -1 +0,0 @@
See Copyright file for information about the copyright

File diff suppressed because it is too large Load Diff

View File

@ -1,105 +0,0 @@
xmlsec, xmlsec-openssl, xmlsec-gnutls, xmlsec-gcrypt libraries
------------------------------------------------------------------------------
Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ALEKSEY SANIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Aleksey Sanin shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from him.
xmlsec-nss library
------------------------------------------------------------------------------
Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
Copyright (c) 2003 America Online, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
Portions of the Software were created using source code and/or APIs
governed by the Mozilla Public License (MPL). The MPL is available
at http://www.mozilla.org/MPL/MPL-1.1.html. The MPL permits such
portions to be distributed with code not governed by MPL, as long
as the requirements of MPL are fulfilled for such portions.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ALEKSEY SANIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Aleksey Sanin shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from him.
xmlsec-mscrypto library
------------------------------------------------------------------------------
Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
Copyright (C) 2003 Cordys R&D BV, All rights reserved.
Copyright (C) 2007 Roumen Petrov.
Copyright (c) 2005-2006 Cryptocom LTD (http://www.cryptocom.ru).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ALEKSEY SANIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Aleksey Sanin shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from him.
References
------------------------------------------------------------------------------
* AOL
http://www.aleksey.com/pipermail/xmlsec/2003/005488.html
http://www.aleksey.com/pipermail/xmlsec/attachments/20030729/0e25648e/attachment.htm
* Cordys R&D BV
http://www.aleksey.com/pipermail/xmlsec/2003/005581.html
* Cryptocom LTD
http://www.aleksey.com/pipermail/xmlsec/2006/007410.html

View File

@ -1,176 +0,0 @@
Rules for commits on the xmlsec module
=========================================
0) DO NOT COMMIT DIRECTLY !
If you have a patch send a mail to xmlsec@aleksey.com mailing
list (you must be subscribed to the list, go to
http://www.aleksey.com/mailman/listinfo/xmlsec to subscribe).
If there is a problem in xmlsec module that prevents you
from building other major components then feel free to patch
first and then send a mail. This is an EXCEPTIONAL case and
you should be VERY carefull when you are doing this.
Igor Zlatkovic get an exception for the send before commit rule.
1) Coding style.
- Formatting. Just for clarification, the formating is:
tab size=8;indentation=4;insert spaces=yes
- Use explicit "!= NULL", "!= 0", etc. This makes code
easier to read and remove warnings on some platform.
Example:
BAD:
if(a)
GOOD:
if(a != NULL)
or
if(a != 0)
- Put figure brackets '{}' even if you have only one operator
in "if", "for", etc. This also makes code easier to read and
saves a lot of time when you need to quickly change something.
Example:
BAD:
if(a != NULL)
xmlFree(a);
GOOD:
if(a != NULL) {
xmlFree(a);
}
- Use round brackets '()' in conditions to show the precedence order.
I don't remember what goes first '<<' or '*', do you?
Example:
BAD:
if(privkey == NULL || pubkey == NULL)
GOOD:
if((privkey == NULL) || (pubkey == NULL))
- Use round brackets '()' for "return".
Example:
BAD:
return 0;
GOOD:
return(0);
- Check for warnings! Use "--enable-pedantic" option
for "configure.in" script to enable as much warnings as possible.
Your patch should produce no new warnings and if you'll
see something that you can fix, then do it.
- Check for memory leaks. There is a built in support for
valgrind (http://devel-home.kde.org/~sewardj/). In order to use it,
use "enable_static_linking" option for "configure.in" script to
force static linking of xmlsec command line utility and run
"make memcheck" from the top xmlsec source folder. The results are printed
at the end. More detailed logs could be found in /tmp/test*.log files.
2) Coding practice
- You should trust nobody! Anyone can fool you: user or another application
might provide you incorrect data; call to xmlsec or system function might
fail with an error code; worse, the same call might fail but the return
code is "success" and so on. The patch fixes a lot of places where the
original code failed to check input data or function return values.
One of my favorite examples is the code that *silently* assumed that
base64 decoded value of a RSA public exponent obtained from XML fits
in a DWORD. And after that the code did memcpy to copy from xmlSecBuffer
to a DWORD variable *without* checking how much data are actualy copied!
The trivial DoS attack (at least DoS!!!) is to put very long base64 string
in XML file and enjoy the server crash.
One of the strongest sides of xmlsec library is that there are very few
known ways to crash it (and all of them are related to running the
application in an environment with a very limited memory to force a malloc
failure). To be a little paranoid is good in this context :)
- malloc/free vs. xmlMalloc/xmlFree
xmlsec library use libxml2 memory management functions. This provides an
easy way to replace default memory management functions with custom ones.
And this might be very usefull in some cases.
Note that crypto library might use a different memory management
functions! Be very carefully to do not mix them (i.e. get memory
allocated by crypto library function and free it with xmFree).
- Errors reporting (XMLSEC_ERRORS_R_XMLSEC_FAILED vs. XMLSEC_ERRORS_R_CRYPTO_FAILED)
The correct usage rule is:
if the failed function starts with "xmlSec" then use
XMLSEC_ERRORS_R_XMLSEC_FAILED
else if it is xmlMalloc/xmlFree/xmlStrdup/etc then use
XMLSEC_ERRORS_R_MALLOC_FAILED
else if the function starts with "xml" or "xslt" (i.e. it comes
from libxml or libxslt) then use
XMLSEC_ERRORS_R_XML_FAILED
else if it is related to IO (fopen, fread, fwrite, etc.) then use
XMLSEC_ERRORS_R_IO_FAILED
else if the function could be used only from xmlsec-crypto (i.e.
it is crypto engine related) then use
XMLSEC_ERRORS_R_CRYPTO_FAILED
else if there is another reason (invalid data, invalid size, etc.)
corresponding error reason should be used
else
it is something new and should be discussed
fi
Correct error reason is very important. For example, some applications
ignore all the XMLSEC_ERRORS_R_XMLSEC_FAILED errors to get to the bottom of
the errors stack and report the actual problem.
- Errors reporting: "size=%d;error=%d" instead of "size %d, error: %d":
It would be great if xmlsec-crypto libraries can follow the error message
standard adopted in the other files of xmlsec library:
"<name1>=<value1>;<name2>=<value2>;..."
This greatly helps when one needs to write a logs parser. For example, to
find the reason of memory allocation failures.
3) Preparing and submitting a patch.
If you want to submit a patch please create a pull request on GitHub and then
send your pull request along with a short description of the problem or feature
you are fixing/implementing to the xmlsec@aleksey.com mailing list
(you must be subscribed to the list, go to http://www.aleksey.com/mailman/listinfo/xmlsec to subscribe).
If you are fixing a bug, it might be a good idea to create a GitHub ticket first
(http://www.aleksey.com/xmlsec/bugs.html) for the record.
4) Building a release
- Cleanup, make sure no other changes are pending
- make distclean
- git status
- Update Changelog
- Write about release changes in the release
- docs/index.html and docs/news.html
- Update release number in
- configure.in (2 places at the top)
- docs/download.html
- Create build
- ./autogen.sh
- make
- Build docs (watch for errors!)
- make docs
- Commit the "prepare for X.Y.Z" release
- git commit -m"prepare for X.Y.Z release" -a
- Run tests, make sure everything is OK
- make check
- Build release
- sudo ./scripts/build_release.sh
- Extract tar file, make sure it works
- cd /tmp
- tar xvfz /usr/src/redhat/SOURCE/xmlsec1-X.Y.z.tar.gz
- cd xmlsec1-X.Y.z
- ./configure
- make
- make check
- Copy tar file to FTP/Web Download
- Copy docs/ folder to Web folder
- Write an announcement email to xmlsec@aleksey.com
- Update freshmeat.net
- Relax

View File

@ -1,38 +0,0 @@
Compilation
1. How to compile XMLSec?
As most UNIX libraries XMLSec follows the "standard":
gunzip -c xmlsec-xxx.tar.gz | tar xvf -
cd xmlsec-xxxx
./configure --help
to see the options, then the compilation/installation proper
./configure [possible options]
make
make install
Probably you may have to rerun ldconfig or similar utility to
update your list of installed shared libs. At this point you can check
that the library is compiled successfully by running
make check
2.What other libraries are needed to compile/install XMLSec?
XMLSec requires following libraries:
LibXML2 (http://xmlsoft.org): a very powerfull XML parsing and
manipulating library
LibXSLT (http://xmlsoft.org/XSLT/): a nice XSLT processor based
on LibXML2
OpenSSL (http://www.openssl.org): well known cryptographic library
If you are running a Linux system then there is a good chance that
you already have all libraries installed. Also XMLSec requires the
normal C ANSI API (please report any violation to this rule you may find).
Aleksey Sanin <aleksey@aleksey.com>
$Id$

View File

@ -1,183 +0,0 @@
NULL =
SAFE_VERSION = @XMLSEC_VERSION_SAFE@
SUBDIRS = include src apps man docs
TEST_APP = apps/xmlsec1$(EXEEXT)
DEFAULT_CRYPTO = @XMLSEC_DEFAULT_CRYPTO@
bin_SCRIPTS = xmlsec1-config
pkgconfig_DATA = xmlsec1.pc @XMLSEC_CRYPTO_PC_FILES_LIST@
pkgconfigdir = $(libdir)/pkgconfig
confexecdir = $(libdir)
confexec_DATA = xmlsec1Conf.sh
m4datadir = $(datadir)/aclocal
m4data_DATA = xmlsec1.m4
ACLOCAL_AMFLAGS = -I m4
DISTCLEANFILES = \
xmlsec1Conf.sh \
xmlsec1.pc \
xmlsec1-openssl.pc \
xmlsec1-nss.pc \
xmlsec1-gnutls.pc \
xmlsec1-gcrypt.pc \
xmlsec1-config \
xmlsec1.spec \
stamp-h2 \
stamp-h3 \
stamp-h4 \
stamp-h5 \
$NULL
EXTRA_DIST = \
m4 \
examples \
scripts \
tests \
win32 \
NEWS \
ChangeLog \
Copyright \
HACKING \
xmlsec-openssl.pc.in \
xmlsec-nss.pc.in\
xmlsec-gnutls.pc.in \
xmlsec-gcrypt.pc.in \
xmlsec-config.in \
xmlsecConf.sh.in \
xmlsec.spec.in \
xmlsec1Conf.sh \
xmlsec1.pc @XMLSEC_CRYPTO_PC_FILES_LIST@ \
xmlsec1-config \
xmlsec1.spec \
xmlsec1.m4 \
$(NULL)
EXTRA_CLEAN = \
examples \
$(NULL)
ABS_SRCDIR=@abs_srcdir@
ABS_BUILDDIR=@abs_builddir@
if XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING
PRECHECK_COMMANDS = \
cd $(ABS_SRCDIR) \
$(NULL)
else
PRECHECK_COMMANDS= \
for i in $(XMLSEC_CRYPTO_LIST) ; do \
export LD_LIBRARY_PATH="$(ABS_BUILDDIR)/src/$$i/.libs:$$LD_LIBRARY_PATH" ; \
done && \
cd $(ABS_SRCDIR) \
$(NULL)
endif
CHECK_CRYPTO_LIST = \
$(XMLSEC_CRYPTO_LIST) \
$(NULL)
docs: docs-man
@(cd docs && $(MAKE) docs)
docs-clean:
@(cd docs && $(MAKE) clean)
docs-man:
@(cd man && $(MAKE) docs)
check: check-all check-info
check-all: $(TEST_APP)
for crypto in $(CHECK_CRYPTO_LIST) ; do \
make check-crypto-$$crypto ; \
done
check-crypto-%: $(TEST_APP)
@($(PRECHECK_COMMANDS) && \
echo "=================== Checking xmlsec-$* =================================" && \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testKeys.sh \
$* \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) der \
&& \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testDSig.sh \
$* \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) \
der \
&& \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testEnc.sh \
$* \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) \
der \
; \
)
check-info:
@echo "---------------------------- ATTENTION -----------------------------------"
@echo "--- Some of the tests use resources located on external HTTP servers. ---"
@echo "--- If you have no Internet connection or the external resource is not ---"
@echo "--- responding then the test will fail. ---"
@echo "---------------------------- ATTENTION -----------------------------------"
check-keys: $(TEST_APP)
@($(PRECHECK_COMMANDS) && \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testKeys.sh \
$(DEFAULT_CRYPTO) \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) \
der \
)
check-dsig: $(TEST_APP)
@($(PRECHECK_COMMANDS) && \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testDSig.sh \
$(DEFAULT_CRYPTO) \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) \
der \
)
check-enc: $(TEST_APP)
@($(PRECHECK_COMMANDS) && \
$(SHELL) ./tests/testrun.sh \
$(ABS_SRCDIR)/tests/testEnc.sh \
$(DEFAULT_CRYPTO) \
$(ABS_SRCDIR)/tests \
$(ABS_BUILDDIR)/$(TEST_APP) \
der \
)
memcheck-res:
@grep -i 'ERROR SUMMARY' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
@grep -i 'in use at exit' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
@grep -i 'definitely lost:' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
@grep -i 'indirectly lost:' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
@grep -i 'possibly lost:' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
@grep -i 'still reachable:' /tmp/*.log | sed 's/.*==.*== *//' | sort -u
memcheck: $(TEST_APP)
@(export DEBUG_MEMORY=1 && $(MAKE) check && $(MAKE) memcheck-res)
perfcheck: $(TEST_APP)
@(export PERF_TEST=10 && $(MAKE) check)
dist-hook:
cleantar:
@($(RM) -f xmlsec*.tar.gz COPYING.LIB)
tar-release: clean cleantar
@(unset CDPATH && $(MAKE) dist)
rpm: cleantar tar-release
@(unset CDPATH && rpmbuild -ta $(distdir).tar.gz)
rpm-release: clean cleantar rpm

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
Check ChangeLog file :)

View File

@ -1,23 +0,0 @@
XMLSec Library
----------------------------------------------
XMLSec library provides C based implementation for major XML Security
standards:
* XML Signature Syntax and Processing
http://www.w3.org/TR/xmldsig-core
* XML Encryption Syntax and Processing
http://www.w3.org/TR/xmlenc-core/
XMLSec is based on well known LibXML (http://xmlsoft.org), LibXSLT
(http://xmlsoft.org/XSLT) and OpenSSL (http://www.openssl.org) libraries.
XMLSec library documentation is available here:
http://www.aleksey.com/xmlsec/
This code is released under the MIT Licence see the Copyright file.
Aleksey Sanin <aleksey@aleksey.com>

View File

@ -1,156 +0,0 @@
*************************************************
General
*************************************************
* Unify password callback (one of parameters: filename)
* Get key usage from certs
* Extend keys manager to return more info when key is found or not found
(what cheks were performed, etc.)
*************************************************
Tests status
*************************************************
-------------------------------------------------
* xmlsec-openssl (April 26, 2010 using OpenSSL 0.9.8g)
-------------------------------------------------
** Skipped tests due to missing transforms: GOST
aleksey-xmldsig-01/enveloped-gost
-------------------------------------------------
* xmlsec-nss (April 26, 2010 using NSS 3.12.6)
-------------------------------------------------
** Skipped tests due to missing transforms: RIPEMD160, SHA224, RSA/OAEP, GOST
aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160
aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
aleksey-xmldsig-01/enveloped-gost
merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes
merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1
** Failed tests due to no support for CRLs in XML document
merlin-xmldsig-twenty-three/signature-x509-crt-crl
-------------------------------------------------
* xmlsec-mscrypto (May 09, 2010 using Windows XP SP3)
-------------------------------------------------
** Skipped tests due to missing transforms: RIPEMD160, SHA224
aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160
aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes
** Failed tests due to no GOST crypto providers on test machine
aleksey-xmldsig-01/enveloped-gost
-------------------------------------------------
* xmlsec-gnutls (May 24, 2010 using GnuTLS)
-------------------------------------------------
** Skipped tests due to missing transforms: RSA PKCS/OAEP, GOST
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5
merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
aleksey-xmldsig-01/enveloped-gost
phaos-xmldsig-three/signature-rsa-manifest-x509-data-crl
01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5
01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5
01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5
01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5
01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1
-------------------------------------------------
* xmlsec-gcrypt (May 09, 2010 using GCrypt)
-------------------------------------------------
** Skipped tests due to missing transforms: DSA, RSA PKCS/OAEP, X509, GOST
aleksey-xmldsig-01/enveloping-dsa-x509chain
aleksey-xmldsig-01/enveloping-rsa-x509chain
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
aleksey-xmldsig-01/enveloping-md5-rsa-md5
aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
aleksey-xmldsig-01/enveloping-sha1-rsa-sha1
aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
aleksey-xmldsig-01/enveloping-sha256-rsa-sha256
aleksey-xmldsig-01/enveloping-sha384-rsa-sha384
aleksey-xmldsig-01/enveloping-sha512-rsa-sha512
aleksey-xmldsig-01/enveloping-expired-cert
aleksey-xmldsig-01/x509data-test
aleksey-xmldsig-01/x509data-sn-test
merlin-xmldsig-twenty-three/signature-keyname
merlin-xmldsig-twenty-three/signature-x509-crt
merlin-xmldsig-twenty-three/signature-x509-sn
merlin-xmldsig-twenty-three/signature-x509-is
merlin-xmldsig-twenty-three/signature-x509-ski
merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt
merlin-xmldsig-twenty-three/signature
merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5
merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p
phaos-xmldsig-three/signature-big
phaos-xmldsig-three/signature-dsa-detached
phaos-xmldsig-three/signature-dsa-enveloped
phaos-xmldsig-three/signature-dsa-enveloping
phaos-xmldsig-three/signature-dsa-manifest
phaos-xmldsig-three/signature-rsa-detached-b64-transform
phaos-xmldsig-three/signature-rsa-detached
phaos-xmldsig-three/signature-rsa-detached-xpath-transform
phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method
phaos-xmldsig-three/signature-rsa-detached-xslt-transform
phaos-xmldsig-three/signature-rsa-enveloped
phaos-xmldsig-three/signature-rsa-enveloping
phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain
phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert
phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial
phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski
phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name
phaos-xmldsig-three/signature-rsa-manifest
phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped
aleksey-xmldsig-01/enveloped-gost
merlin-xmldsig-twenty-three/signature-x509-crt-crl
aleksey-xmldsig-01/enveloping-expired-cert
phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method
phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val
phaos-xmldsig-three/signature-rsa-enveloped-bad-sig
phaos-xmldsig-three/signature-rsa-manifest-x509-data-crl
merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5
merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5
01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5
01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5
01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5
01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1

File diff suppressed because it is too large Load Diff

View File

@ -1,82 +0,0 @@
NULL =
bin_PROGRAMS = xmlsec1
XMLSEC_LIBS = $(top_builddir)/src/libxmlsec1.la
# check if we use dynamic loading for xmlsec-crypto or not
if XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING
CRYPTO_DEPS = \
$(top_builddir)/src/@XMLSEC_DEFAULT_CRYPTO@/lib$(XMLSEC_CRYPTO_LIB).la \
$(NULL)
CRYPTO_INCLUDES = \
$(XMLSEC_CRYPTO_CFLAGS) \
$(NULL)
CRYPTO_LD_FLAGS = \
$(NULL)
CRYPTO_LD_ADD = \
$(XMLSEC_CRYPTO_LIBS) \
$(CRYPTO_DEPS) \
$(NULL)
else
CRYPTO_DEPS = \
$(NULL)
CRYPTO_INCLUDES = \
-DXMLSEC_CRYPTO_DYNAMIC_LOADING=1
$(NULL)
CRYPTO_LD_FLAGS = \
$(NULL)
CRYPTO_LD_ADD = \
$(CRYPTO_DEPS) \
$(NULL)
endif
AM_CFLAGS = \
-DPACKAGE=\"@PACKAGE@\" \
-I../include \
-I$(top_srcdir)/include \
$(XMLSEC_DEFINES) \
$(XMLSEC_APP_DEFINES) \
$(CRYPTO_INCLUDES) \
$(LIBXSLT_CFLAGS) \
$(LIBXML_CFLAGS) \
$(XMLSEC_DL_INCLUDES) \
$(NULL)
# xmlsec command line utility
xmlsec1_SOURCES = \
xmlsec.c \
crypto.c crypto.h \
cmdline.c cmdline.h \
$(NULL)
xmlsec1_LDFLAGS = \
@XMLSEC_STATIC_BINARIES@ \
$(CRYPTO_LD_FLAGS) \
$(NULL)
xmlsec1_LDADD = \
$(LIBXSLT_LIBS) \
$(LIBXML_LIBS) \
$(CRYPTO_LD_ADD) \
$(XMLSEC_LIBS) \
$(XMLSEC_DL_LIBS) \
$(NULL)
xmlsec1_DEPENDENCIES = \
$(CRYPTO_DEPS) \
$(XMLSEC_LIBS) \
$(NULL)

View File

@ -1,819 +0,0 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = xmlsec1$(EXEEXT)
subdir = apps
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am__objects_1 =
am_xmlsec1_OBJECTS = xmlsec.$(OBJEXT) crypto.$(OBJEXT) \
cmdline.$(OBJEXT) $(am__objects_1)
xmlsec1_OBJECTS = $(am_xmlsec1_OBJECTS)
am__DEPENDENCIES_1 =
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/src/@XMLSEC_DEFAULT_CRYPTO@/lib$(XMLSEC_CRYPTO_LIB).la \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(am__DEPENDENCIES_1)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(am__DEPENDENCIES_1)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(am__DEPENDENCIES_2) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
xmlsec1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(xmlsec1_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(xmlsec1_SOURCES)
DIST_SOURCES = $(xmlsec1_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CP = @CP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCRYPT_CFLAGS = @GCRYPT_CFLAGS@
GCRYPT_CRYPTO_LIB = @GCRYPT_CRYPTO_LIB@
GCRYPT_LIBS = @GCRYPT_LIBS@
GCRYPT_MIN_VERSION = @GCRYPT_MIN_VERSION@
GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
GNUTLS_CRYPTO_LIB = @GNUTLS_CRYPTO_LIB@
GNUTLS_LIBS = @GNUTLS_LIBS@
GNUTLS_MIN_VERSION = @GNUTLS_MIN_VERSION@
GREP = @GREP@
GTKDOC_MKDB = @GTKDOC_MKDB@
GTKDOC_MKHTML = @GTKDOC_MKHTML@
GTKDOC_MKTMPL = @GTKDOC_MKTMPL@
GTKDOC_SCAN = @GTKDOC_SCAN@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML_CFLAGS = @LIBXML_CFLAGS@
LIBXML_CONFIG = @LIBXML_CONFIG@
LIBXML_LIBS = @LIBXML_LIBS@
LIBXML_MIN_VERSION = @LIBXML_MIN_VERSION@
LIBXSLT_CFLAGS = @LIBXSLT_CFLAGS@
LIBXSLT_CONFIG = @LIBXSLT_CONFIG@
LIBXSLT_LIBS = @LIBXSLT_LIBS@
LIBXSLT_MIN_VERSION = @LIBXSLT_MIN_VERSION@
LIBXSLT_PC_FILE_COND = @LIBXSLT_PC_FILE_COND@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN2HTML = @MAN2HTML@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MOZILLA_MIN_VERSION = @MOZILLA_MIN_VERSION@
MSCRYPTO_CFLAGS = @MSCRYPTO_CFLAGS@
MSCRYPTO_CRYPTO_LIB = @MSCRYPTO_CRYPTO_LIB@
MSCRYPTO_LIBS = @MSCRYPTO_LIBS@
MV = @MV@
NM = @NM@
NMEDIT = @NMEDIT@
NSPR_MIN_VERSION = @NSPR_MIN_VERSION@
NSPR_PACKAGE = @NSPR_PACKAGE@
NSS_CFLAGS = @NSS_CFLAGS@
NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
NSS_LIBS = @NSS_LIBS@
NSS_MIN_VERSION = @NSS_MIN_VERSION@
NSS_PACKAGE = @NSS_PACKAGE@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
OPENSSL_LIBS = @OPENSSL_LIBS@
OPENSSL_MIN_VERSION = @OPENSSL_MIN_VERSION@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TAR = @TAR@
VERSION = @VERSION@
XMLSEC_APP_DEFINES = @XMLSEC_APP_DEFINES@
XMLSEC_CFLAGS = @XMLSEC_CFLAGS@
XMLSEC_CORE_CFLAGS = @XMLSEC_CORE_CFLAGS@
XMLSEC_CORE_LIBS = @XMLSEC_CORE_LIBS@
XMLSEC_CRYPTO_CFLAGS = @XMLSEC_CRYPTO_CFLAGS@
XMLSEC_CRYPTO_DISABLED_LIST = @XMLSEC_CRYPTO_DISABLED_LIST@
XMLSEC_CRYPTO_EXTRA_LDFLAGS = @XMLSEC_CRYPTO_EXTRA_LDFLAGS@
XMLSEC_CRYPTO_LIB = @XMLSEC_CRYPTO_LIB@
XMLSEC_CRYPTO_LIBS = @XMLSEC_CRYPTO_LIBS@
XMLSEC_CRYPTO_LIST = @XMLSEC_CRYPTO_LIST@
XMLSEC_CRYPTO_PC_FILES_LIST = @XMLSEC_CRYPTO_PC_FILES_LIST@
XMLSEC_DEFAULT_CRYPTO = @XMLSEC_DEFAULT_CRYPTO@
XMLSEC_DEFINES = @XMLSEC_DEFINES@
XMLSEC_DL_INCLUDES = @XMLSEC_DL_INCLUDES@
XMLSEC_DL_LIBS = @XMLSEC_DL_LIBS@
XMLSEC_DOCDIR = @XMLSEC_DOCDIR@
XMLSEC_EXTRA_LDFLAGS = @XMLSEC_EXTRA_LDFLAGS@
XMLSEC_GCRYPT_CFLAGS = @XMLSEC_GCRYPT_CFLAGS@
XMLSEC_GCRYPT_LIBS = @XMLSEC_GCRYPT_LIBS@
XMLSEC_GNUTLS_CFLAGS = @XMLSEC_GNUTLS_CFLAGS@
XMLSEC_GNUTLS_LIBS = @XMLSEC_GNUTLS_LIBS@
XMLSEC_LIBDIR = @XMLSEC_LIBDIR@
XMLSEC_LIBS = $(top_builddir)/src/libxmlsec1.la
XMLSEC_NO_AES = @XMLSEC_NO_AES@
XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_DES = @XMLSEC_NO_DES@
XMLSEC_NO_DSA = @XMLSEC_NO_DSA@
XMLSEC_NO_GCRYPT = @XMLSEC_NO_GCRYPT@
XMLSEC_NO_GNUTLS = @XMLSEC_NO_GNUTLS@
XMLSEC_NO_GOST = @XMLSEC_NO_GOST@
XMLSEC_NO_GOST2012 = @XMLSEC_NO_GOST2012@
XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
XMLSEC_NO_MSCRYPTO = @XMLSEC_NO_MSCRYPTO@
XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
XMLSEC_NO_OPENSSL = @XMLSEC_NO_OPENSSL@
XMLSEC_NO_RIPEMD160 = @XMLSEC_NO_RIPEMD160@
XMLSEC_NO_RSA = @XMLSEC_NO_RSA@
XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
XMLSEC_NO_X509 = @XMLSEC_NO_X509@
XMLSEC_NO_XMLDSIG = @XMLSEC_NO_XMLDSIG@
XMLSEC_NO_XMLENC = @XMLSEC_NO_XMLENC@
XMLSEC_NSS_CFLAGS = @XMLSEC_NSS_CFLAGS@
XMLSEC_NSS_LIBS = @XMLSEC_NSS_LIBS@
XMLSEC_OPENSSL_CFLAGS = @XMLSEC_OPENSSL_CFLAGS@
XMLSEC_OPENSSL_LIBS = @XMLSEC_OPENSSL_LIBS@
XMLSEC_PACKAGE = @XMLSEC_PACKAGE@
XMLSEC_STATIC_BINARIES = @XMLSEC_STATIC_BINARIES@
XMLSEC_VERSION = @XMLSEC_VERSION@
XMLSEC_VERSION_INFO = @XMLSEC_VERSION_INFO@
XMLSEC_VERSION_MAJOR = @XMLSEC_VERSION_MAJOR@
XMLSEC_VERSION_MINOR = @XMLSEC_VERSION_MINOR@
XMLSEC_VERSION_SAFE = @XMLSEC_VERSION_SAFE@
XMLSEC_VERSION_SUBMINOR = @XMLSEC_VERSION_SUBMINOR@
XSLTPROC = @XSLTPROC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
NULL =
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@CRYPTO_DEPS = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(NULL)
# check if we use dynamic loading for xmlsec-crypto or not
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@CRYPTO_DEPS = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(top_builddir)/src/@XMLSEC_DEFAULT_CRYPTO@/lib$(XMLSEC_CRYPTO_LIB).la \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(NULL)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@CRYPTO_INCLUDES = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@CRYPTO_INCLUDES = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(XMLSEC_CRYPTO_CFLAGS) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(NULL)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@CRYPTO_LD_FLAGS = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(NULL)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@CRYPTO_LD_FLAGS = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(NULL)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@CRYPTO_LD_ADD = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(CRYPTO_DEPS) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(NULL)
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@CRYPTO_LD_ADD = \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(XMLSEC_CRYPTO_LIBS) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(CRYPTO_DEPS) \
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_TRUE@ $(NULL)
AM_CFLAGS = \
-DPACKAGE=\"@PACKAGE@\" \
-I../include \
-I$(top_srcdir)/include \
$(XMLSEC_DEFINES) \
$(XMLSEC_APP_DEFINES) \
$(CRYPTO_INCLUDES) \
$(LIBXSLT_CFLAGS) \
$(LIBXML_CFLAGS) \
$(XMLSEC_DL_INCLUDES) \
$(NULL)
# xmlsec command line utility
xmlsec1_SOURCES = \
xmlsec.c \
crypto.c crypto.h \
cmdline.c cmdline.h \
$(NULL)
xmlsec1_LDFLAGS = \
@XMLSEC_STATIC_BINARIES@ \
$(CRYPTO_LD_FLAGS) \
$(NULL)
xmlsec1_LDADD = \
$(LIBXSLT_LIBS) \
$(LIBXML_LIBS) \
$(CRYPTO_LD_ADD) \
$(XMLSEC_LIBS) \
$(XMLSEC_DL_LIBS) \
$(NULL)
xmlsec1_DEPENDENCIES = \
$(CRYPTO_DEPS) \
$(XMLSEC_LIBS) \
$(NULL)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu apps/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu apps/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
xmlsec1$(EXEEXT): $(xmlsec1_OBJECTS) $(xmlsec1_DEPENDENCIES) $(EXTRA_xmlsec1_DEPENDENCIES)
@rm -f xmlsec1$(EXEEXT)
$(AM_V_CCLD)$(xmlsec1_LINK) $(xmlsec1_OBJECTS) $(xmlsec1_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdline.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypto.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlsec.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
.PRECIOUS: Makefile
@XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING_FALSE@ $(NULL)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,353 +0,0 @@
/**
*
* XMLSec library
*
*
* See Copyright for the status of this software.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
#if defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <assert.h>
#include "cmdline.h"
static int xmlSecAppCmdLineMatchParam (const char* argvParam,
const char* paramName,
int canHaveNameString);
static xmlSecAppCmdLineParamPtr xmlSecAppCmdLineParamsListFind (xmlSecAppCmdLineParamPtr* params,
xmlSecAppCmdLineParamTopic topics,
const char* name);
static int xmlSecAppCmdLineParamRead (xmlSecAppCmdLineParamPtr param,
const char** argv,
int argc,
int pos);
static int xmlSecAppCmdLineTimeParamRead (const char* str,
time_t* t);
int
xmlSecAppCmdLineParamIsSet(xmlSecAppCmdLineParamPtr param) {
return(((param != NULL) && (param->value != NULL)) ? 1 : 0);
}
const char*
xmlSecAppCmdLineParamGetString(xmlSecAppCmdLineParamPtr param) {
if(param->type != xmlSecAppCmdLineParamTypeString) {
fprintf(stderr, "Error: parameter \"%s\" is not string.\n", param->fullName);
return(NULL);
}
return((param->value != NULL) ? param->value->strValue : NULL);
}
const char*
xmlSecAppCmdLineParamGetStringList(xmlSecAppCmdLineParamPtr param) {
if(param->type != xmlSecAppCmdLineParamTypeStringList) {
fprintf(stderr, "Error: parameter \"%s\" is not string list.\n", param->fullName);
return(NULL);
}
return((param->value != NULL) ? param->value->strListValue : NULL);
}
int
xmlSecAppCmdLineParamGetInt(xmlSecAppCmdLineParamPtr param, int def) {
if(param->type != xmlSecAppCmdLineParamTypeNumber) {
fprintf(stderr, "Error: parameter \"%s\" is not integer.\n", param->fullName);
return(def);
}
return((param->value != NULL) ? param->value->intValue : def);
}
time_t
xmlSecAppCmdLineParamGetTime(xmlSecAppCmdLineParamPtr param, time_t def) {
if(param->type != xmlSecAppCmdLineParamTypeTime) {
fprintf(stderr, "Error: parameter \"%s\" is not time.\n", param->fullName);
return(def);
}
return((param->value != NULL) ? param->value->timeValue : def);
}
int
xmlSecAppCmdLineParamsListParse(xmlSecAppCmdLineParamPtr* params,
xmlSecAppCmdLineParamTopic topics,
const char** argv, int argc, int pos) {
xmlSecAppCmdLineParamPtr param;
int ii;
int ret;
assert(params != NULL);
assert(argv != NULL);
while((pos < argc) && (argv[pos][0] == '-') && (strcmp(argv[pos], XMLSEC_STDOUT_FILENAME) != 0)) {
param = xmlSecAppCmdLineParamsListFind(params, topics, argv[pos]);
if(param == NULL) {
fprintf(stderr, "Error: parameter \"%s\" is not supported or the requested\nfeature might have been disabled during compilation.\n", argv[pos]);
return(-1);
}
ret = xmlSecAppCmdLineParamRead(param, argv, argc, pos);
if(ret < pos) {
fprintf(stderr, "Error: failed to parse parameter \"%s\".\n", argv[pos]);
return(-1);
}
pos = ret + 1;
}
/* check that all parameters at the end are filenames */
for(ii = pos; (ii < argc); ++ii) {
if((argv[ii][0] == '-') && (strcmp(argv[pos], XMLSEC_STDOUT_FILENAME) != 0)) {
fprintf(stderr, "Error: filename is expected instead of parameter \"%s\".\n", argv[ii]);
return(-1);
}
}
/* done */
return(pos);
}
void
xmlSecAppCmdLineParamsListClean(xmlSecAppCmdLineParamPtr* params) {
xmlSecAppCmdLineValuePtr tmp;
size_t i;
assert(params != NULL);
for(i = 0; params[i] != NULL; ++i) {
while(params[i]->value != NULL) {
tmp = params[i]->value;
params[i]->value = params[i]->value->next;
xmlSecAppCmdLineValueDestroy(tmp);
}
}
}
void
xmlSecAppCmdLineParamsListPrint(xmlSecAppCmdLineParamPtr* params,
xmlSecAppCmdLineParamTopic topics,
FILE* output) {
size_t i;
assert(params != NULL);
assert(output != NULL);
for(i = 0; params[i] != NULL; ++i) {
if(((params[i]->topics & topics) != 0) && (params[i]->help != NULL)) {
fprintf(output, " %s\n", params[i]->help);
}
}
}
xmlSecAppCmdLineValuePtr
xmlSecAppCmdLineValueCreate(xmlSecAppCmdLineParamPtr param, int pos) {
xmlSecAppCmdLineValuePtr value;
assert(param != NULL);
value = (xmlSecAppCmdLineValuePtr) malloc(sizeof(xmlSecAppCmdLineValue));
if(value == NULL) {
fprintf(stderr, "Error: malloc failed (%d bytes).\n", (int)sizeof(xmlSecAppCmdLineValue));
return(NULL);
}
memset(value, 0, sizeof(xmlSecAppCmdLineValue));
value->param = param;
value->pos = pos;
return(value);
}
void
xmlSecAppCmdLineValueDestroy(xmlSecAppCmdLineValuePtr value) {
assert(value != NULL);
if(value->strListValue != NULL) {
free((void*)value->strListValue);
}
free(value);
}
static int
xmlSecAppCmdLineMatchParam(const char* argvParam, const char* paramName,
int canHaveNameString) {
assert(argvParam != NULL);
assert(paramName != NULL);
if(canHaveNameString != 0) {
int len = strlen(paramName);
if((strncmp(argvParam, paramName, len) == 0) &&
((argvParam[len] == '\0') || (argvParam[len] == ':'))) {
return(1);
}
} else if(strcmp(argvParam, paramName) == 0) {
return(1);
}
return(0);
}
static xmlSecAppCmdLineParamPtr
xmlSecAppCmdLineParamsListFind(xmlSecAppCmdLineParamPtr* params, xmlSecAppCmdLineParamTopic topics,
const char* name) {
size_t i;
int canHaveNameString;
assert(params != NULL);
assert(name != NULL);
for(i = 0; params[i] != NULL; ++i) {
if((params[i]->topics & topics) == 0) {
continue;
}
canHaveNameString = ((params[i]->flags & xmlSecAppCmdLineParamFlagParamNameValue) != 0) ? 1 : 0;
if((params[i]->fullName != NULL) &&
(xmlSecAppCmdLineMatchParam(name, params[i]->fullName, canHaveNameString) == 1)) {
return(params[i]);
}
if((params[i]->shortName != NULL) &&
(xmlSecAppCmdLineMatchParam(name, params[i]->shortName, canHaveNameString) == 1)) {
return(params[i]);
}
}
return(NULL);
}
static int
xmlSecAppCmdLineParamRead(xmlSecAppCmdLineParamPtr param, const char** argv, int argc, int pos) {
xmlSecAppCmdLineValuePtr value;
xmlSecAppCmdLineValuePtr prev = NULL;
char* buf;
assert(param != NULL);
assert(argv != NULL);
assert(pos < argc);
/* first find the previous value in the list */
if((param->flags & xmlSecAppCmdLineParamFlagMultipleValues) != 0) {
prev = param->value;
while((prev != NULL) && (prev->next != NULL)) {
prev = prev->next;
}
} else if(param->value != NULL) {
fprintf(stderr, "Error: only one parameter \"%s\" is allowed.\n", argv[pos]);
return(-1);
}
/* create new value and add to the list */
value = xmlSecAppCmdLineValueCreate(param, pos);
if(value == NULL) {
fprintf(stderr, "Error: failed to create value for parameter \"%s\".\n", argv[pos]);
return(-1);
}
if(prev != NULL) {
assert(prev->next == NULL);
prev->next = value;
} else {
param->value = value;
}
/* if we can have a string value after the name, parse it */
if((param->flags & xmlSecAppCmdLineParamFlagParamNameValue) != 0) {
value->paramNameValue = strchr(argv[pos], ':');
if(value->paramNameValue != NULL) {
++value->paramNameValue;
}
}
switch(param->type) {
case xmlSecAppCmdLineParamTypeFlag:
/* do nothing */
break;
case xmlSecAppCmdLineParamTypeString:
if(pos + 1 >= argc) {
fprintf(stderr, "Error: string argument expected for parameter \"%s\".\n", argv[pos]);
return(-1);
}
value->strValue = argv[++pos];
break;
case xmlSecAppCmdLineParamTypeStringList:
if(pos + 1 >= argc) {
fprintf(stderr, "Error: string list argument expected for parameter \"%s\".\n", argv[pos]);
return(-1);
}
value->strValue = argv[++pos];
buf = (char*)malloc(strlen(value->strValue) + 2);
if(buf == NULL) {
fprintf(stderr, "Error: failed to allocate memory (%d bytes).\n", (int)strlen(value->strValue) + 2);
return(-1);
}
memset(buf, 0, strlen(value->strValue) + 2);
memcpy(buf, value->strValue, strlen(value->strValue));
value->strListValue = buf;
while((*buf) != '\0') {
if((*buf) == ',') {
(*buf) = '\0';
}
++buf;
}
break;
case xmlSecAppCmdLineParamTypeNumber:
if(pos + 1 >= argc) {
fprintf(stderr, "Error: integer argument expected for parameter \"%s\".\n", argv[pos]);
return(-1);
}
value->strValue = argv[++pos];
if(sscanf(value->strValue, "%d", &(value->intValue)) != 1) {
fprintf(stderr, "Error: integer argument \"%s\" is invalid.\n", value->strValue);
return(-1);
}
break;
case xmlSecAppCmdLineParamTypeTime:
if(pos + 1 >= argc) {
fprintf(stderr, "Error: time argument expected for parameter \"%s\".\n", argv[pos]);
return(-1);
}
value->strValue = argv[++pos];
if(xmlSecAppCmdLineTimeParamRead(value->strValue, &(value->timeValue)) < 0) {
fprintf(stderr, "Error: time argument \"%s\" is invalid, expected format is \"YYYY-MM-DD HH:MM:SS\").\n", value->strValue);
return(-1);
}
break;
}
return(pos);
}
static int
xmlSecAppCmdLineTimeParamRead(const char* str, time_t* t) {
struct tm tm;
int n;
if((str == NULL) || (t == NULL)) {
return(-1);
}
memset(&tm, 0, sizeof(tm));
tm.tm_isdst = -1;
n = sscanf(str, "%4d-%2d-%2d%*c%2d:%2d:%2d",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec);
if((n != 6) || (tm.tm_year < 1900)
|| (tm.tm_mon < 1) || (tm.tm_mon > 12)
|| (tm.tm_mday < 1) || (tm.tm_mday > 31)
|| (tm.tm_hour < 0) || (tm.tm_hour > 23)
|| (tm.tm_min < 0) || (tm.tm_min > 59)
|| (tm.tm_sec < 0) || (tm.tm_sec > 61)) {
return(-1);
}
tm.tm_year -= 1900; /* tm relative format year */
tm.tm_mon -= 1; /* tm relative format month */
(*t) = mktime(&tm);
return(0);
}

View File

@ -1,91 +0,0 @@
/**
* XMLSec library
*
* Command line parsing routines
*
* See Copyright for the status of this software.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
#ifndef __XMLSEC_APPS_CMDLINE_H__
#define __XMLSEC_APPS_CMDLINE_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <time.h>
typedef struct _xmlSecAppCmdLineParam xmlSecAppCmdLineParam,
*xmlSecAppCmdLineParamPtr;
typedef struct _xmlSecAppCmdLineValue xmlSecAppCmdLineValue,
*xmlSecAppCmdLineValuePtr;
typedef unsigned int xmlSecAppCmdLineParamTopic;
#define xmlSecAppCmdLineParamFlagNone 0x0000
#define xmlSecAppCmdLineParamFlagParamNameValue 0x0001
#define xmlSecAppCmdLineParamFlagMultipleValues 0x0002
#define XMLSEC_STDOUT_FILENAME "-"
typedef enum {
xmlSecAppCmdLineParamTypeFlag,
xmlSecAppCmdLineParamTypeString,
xmlSecAppCmdLineParamTypeStringList,
xmlSecAppCmdLineParamTypeNumber,
xmlSecAppCmdLineParamTypeTime
} xmlSecAppCmdLineParamType;
struct _xmlSecAppCmdLineParam {
xmlSecAppCmdLineParamTopic topics;
const char* fullName;
const char* shortName;
const char* help;
xmlSecAppCmdLineParamType type;
int flags;
xmlSecAppCmdLineValuePtr value;
};
int xmlSecAppCmdLineParamIsSet (xmlSecAppCmdLineParamPtr param);
const char* xmlSecAppCmdLineParamGetString (xmlSecAppCmdLineParamPtr param);
const char* xmlSecAppCmdLineParamGetStringList (xmlSecAppCmdLineParamPtr param);
int xmlSecAppCmdLineParamGetInt (xmlSecAppCmdLineParamPtr param,
int def);
time_t xmlSecAppCmdLineParamGetTime (xmlSecAppCmdLineParamPtr param,
time_t def);
int xmlSecAppCmdLineParamsListParse (xmlSecAppCmdLineParamPtr* params,
xmlSecAppCmdLineParamTopic topcis,
const char** argv,
int argc,
int pos);
void xmlSecAppCmdLineParamsListClean (xmlSecAppCmdLineParamPtr* params);
void xmlSecAppCmdLineParamsListPrint (xmlSecAppCmdLineParamPtr* params,
xmlSecAppCmdLineParamTopic topic,
FILE* output);
struct _xmlSecAppCmdLineValue {
xmlSecAppCmdLineParamPtr param;
int pos;
const char* paramNameValue;
const char* strValue;
const char* strListValue;
int intValue;
time_t timeValue;
xmlSecAppCmdLineValuePtr next;
};
xmlSecAppCmdLineValuePtr xmlSecAppCmdLineValueCreate (xmlSecAppCmdLineParamPtr param,
int pos);
void xmlSecAppCmdLineValueDestroy (xmlSecAppCmdLineValuePtr value);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __XMLSEC_APPS_CMDLINE_H__ */

View File

@ -1,396 +0,0 @@
/**
*
* XMLSec library
*
*
* See Copyright for the status of this software.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
#if defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif
#include <string.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/errors.h>
#include "crypto.h"
int
xmlSecAppCryptoInit(const char* config) {
if(xmlSecCryptoAppInit(config) < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppInit",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
if(xmlSecCryptoInit() < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoInit",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
return(0);
}
int
xmlSecAppCryptoShutdown(void) {
if(xmlSecCryptoShutdown() < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoShutdown",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
if(xmlSecCryptoAppShutdown() < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppShutdown",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
return(0);
}
int
xmlSecAppCryptoSimpleKeysMngrInit(xmlSecKeysMngrPtr mngr) {
xmlSecAssert2(mngr != NULL, -1);
return(xmlSecCryptoAppDefaultKeysMngrInit(mngr));
}
int
xmlSecAppCryptoSimpleKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char *filename) {
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
return(xmlSecCryptoAppDefaultKeysMngrLoad(mngr, filename));
}
int
xmlSecAppCryptoSimpleKeysMngrSave(xmlSecKeysMngrPtr mngr, const char *filename, xmlSecKeyDataType type) {
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
return(xmlSecCryptoAppDefaultKeysMngrSave(mngr, filename, type));
}
int
xmlSecAppCryptoSimpleKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
xmlSecKeyDataFormat format, xmlSecKeyDataType type) {
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
#ifndef XMLSEC_NO_X509
return(xmlSecCryptoAppKeysMngrCertLoad(mngr, filename, format, type));
#else /* XMLSEC_NO_X509 */
return(-1);
#endif /* XMLSEC_NO_X509 */
}
int
xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad(xmlSecKeysMngrPtr mngr,
const char* files, const char* pwd,
const char* name,
xmlSecKeyDataFormat format) {
xmlSecKeyPtr key;
int ret;
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(files != NULL, -1);
/* first is the key file */
key = xmlSecCryptoAppKeyLoad(files, format, pwd,
xmlSecCryptoAppGetDefaultPwdCallback(), (void*)files);
if(key == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppKeyLoad",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"uri=%s",
xmlSecErrorsSafeString(files));
return(-1);
}
if(name != NULL) {
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeySetName",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=%s",
xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
}
#ifndef XMLSEC_NO_X509
for(files += strlen(files) + 1; (files[0] != '\0'); files += strlen(files) + 1) {
ret = xmlSecCryptoAppKeyCertLoad(key, files, format);
if(ret < 0){
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppKeyCertLoad",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"uri=%s",
xmlSecErrorsSafeString(files));
xmlSecKeyDestroy(key);
return(-1);
}
}
#else /* XMLSEC_NO_X509 */
files += strlen(files) + 1;
if(files[0] != '\0') {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"x509",
XMLSEC_ERRORS_R_DISABLED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
#endif /* XMLSEC_NO_X509 */
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppDefaultKeysMngrAdoptKey",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
xmlSecKeyDestroy(key);
return(-1);
}
return(0);
}
int
xmlSecAppCryptoSimpleKeysMngrPkcs12KeyLoad(xmlSecKeysMngrPtr mngr, const char *filename, const char* pwd, const char *name) {
xmlSecKeyPtr key;
int ret;
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
#ifndef XMLSEC_NO_X509
key = xmlSecCryptoAppKeyLoad(filename, xmlSecKeyDataFormatPkcs12, pwd,
xmlSecCryptoAppGetDefaultPwdCallback(), (void*)filename);
if(key == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppKeyLoad",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"filename=%s",
xmlSecErrorsSafeString(filename));
return(-1);
}
if(name != NULL) {
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeySetName",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=%s",
xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
}
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppDefaultKeysMngrAdoptKey",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
xmlSecKeyDestroy(key);
return(-1);
}
return(0);
#else /* XMLSEC_NO_X509 */
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"x509",
XMLSEC_ERRORS_R_DISABLED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
#endif /* XMLSEC_NO_X509 */
}
int
xmlSecAppCryptoSimpleKeysMngrBinaryKeyLoad(xmlSecKeysMngrPtr mngr, const char* keyKlass, const char *filename, const char *name) {
xmlSecKeyPtr key;
xmlSecKeyDataId dataId;
int ret;
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(keyKlass != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
/* find requested data */
dataId = xmlSecKeyDataIdListFindByName(xmlSecKeyDataIdsGet(), BAD_CAST keyKlass,
xmlSecKeyDataUsageAny);
if(dataId == xmlSecKeyDataIdUnknown) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeyDataIdListFindByName",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=%s",
xmlSecErrorsSafeString(keyKlass));
return(-1);
}
key = xmlSecKeyReadBinaryFile(dataId, filename);
if(key == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeyReadBinaryFile",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
return(-1);
}
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeySetName",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=%s",
xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
/* finally add it to keys manager */
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppDefaultKeysMngrAdoptKey",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
xmlSecKeyDestroy(key);
return(-1);
}
return(0);
}
int
xmlSecAppCryptoSimpleKeysMngrKeyGenerate(xmlSecKeysMngrPtr mngr, const char* keyKlassAndSize, const char* name) {
xmlSecKeyPtr key;
int ret;
xmlSecAssert2(mngr != NULL, -1);
xmlSecAssert2(keyKlassAndSize != NULL, -1);
key = xmlSecAppCryptoKeyGenerate(keyKlassAndSize, name, xmlSecKeyDataTypePermanent);
if(key == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecAppCryptoSimpleKeysMngrKeyGenerate",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=%s",
xmlSecErrorsSafeString(name));
return(-1);
}
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecCryptoAppDefaultKeysMngrAdoptKey",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
XMLSEC_ERRORS_NO_MESSAGE);
xmlSecKeyDestroy(key);
return(-1);
}
return(0);
}
xmlSecKeyPtr
xmlSecAppCryptoKeyGenerate(const char* keyKlassAndSize, const char* name, xmlSecKeyDataType type) {
xmlSecKeyPtr key;
char* buf;
char* p;
int size;
int ret;
xmlSecAssert2(keyKlassAndSize != NULL, NULL);
buf = (char*) xmlStrdup(BAD_CAST keyKlassAndSize);
if(buf == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
NULL,
XMLSEC_ERRORS_R_STRDUP_FAILED,
"name=%s",
xmlSecErrorsSafeString(name));
return(NULL);
}
/* separate key klass and size */
p = strchr(buf, '-');
if(p == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
NULL,
XMLSEC_ERRORS_R_INVALID_DATA,
"key size is not specified %s",
xmlSecErrorsSafeString(buf));
xmlFree(buf);
return(NULL);
}
*(p++) = '\0';
size = atoi(p);
key = xmlSecKeyGenerateByName(BAD_CAST buf, size, type);
if(key == NULL) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeyGenerate",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"klass=%s;size=%d",
xmlSecErrorsSafeString(buf),
size);
xmlFree(buf);
return(NULL);
}
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
xmlSecError(XMLSEC_ERRORS_HERE,
NULL,
"xmlSecKeySetName",
XMLSEC_ERRORS_R_XMLSEC_FAILED,
"name=\"%s\"",
xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
xmlFree(buf);
return(NULL);
}
xmlFree(buf);
return(key);
}

View File

@ -1,70 +0,0 @@
/**
* XMLSec library
*
*
* See Copyright for the status of this software.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
#ifndef __XMLSEC_APPS_CRYPTO_H__
#define __XMLSEC_APPS_CRYPTO_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keyinfo.h>
#include <xmlsec/keysmngr.h>
#include <xmlsec/crypto.h>
int xmlSecAppCryptoInit (const char* config);
int xmlSecAppCryptoShutdown (void);
xmlSecKeyPtr xmlSecAppCryptoKeyGenerate (const char* keyKlassAndSize,
const char* name,
xmlSecKeyDataType type);
/*****************************************************************************
*
* Simple keys manager
*
****************************************************************************/
int xmlSecAppCryptoSimpleKeysMngrInit (xmlSecKeysMngrPtr mngr);
int xmlSecAppCryptoSimpleKeysMngrLoad (xmlSecKeysMngrPtr mngr,
const char *filename);
int xmlSecAppCryptoSimpleKeysMngrSave (xmlSecKeysMngrPtr mngr,
const char *filename,
xmlSecKeyDataType type);
int xmlSecAppCryptoSimpleKeysMngrCertLoad (xmlSecKeysMngrPtr mngr,
const char *filename,
xmlSecKeyDataFormat format,
xmlSecKeyDataType type);
int xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad (xmlSecKeysMngrPtr mngr,
const char *files,
const char* pwd,
const char* name,
xmlSecKeyDataFormat format);
int xmlSecAppCryptoSimpleKeysMngrPkcs12KeyLoad (xmlSecKeysMngrPtr mngr,
const char *filename,
const char* pwd,
const char *name);
int xmlSecAppCryptoSimpleKeysMngrBinaryKeyLoad (xmlSecKeysMngrPtr mngr,
const char* keyKlass,
const char* filename,
const char *name);
int xmlSecAppCryptoSimpleKeysMngrKeyGenerate (xmlSecKeysMngrPtr mngr,
const char* keyKlassAndSize,
const char* name);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __XMLSEC_APPS_CRYPTO_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -1,347 +0,0 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

File diff suppressed because it is too large Load Diff

View File

@ -1,131 +0,0 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <ansidecl.h> header file. */
#undef HAVE_ANSIDECL_H
/* Define to 1 if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
*/
#undef HAVE_DIRENT_H
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
/* Define to 1 if you have the `fprintf' function. */
#undef HAVE_FPRINTF
/* Define to 1 if you have the <gnutls/gnutls.h> header file. */
#undef HAVE_GNUTLS_GNUTLS_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
/* Define to 1 if you have the `printf' function. */
#undef HAVE_PRINTF
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
/* Define to 1 if you have the `sprintf' function. */
#undef HAVE_SPRINTF
/* Define to 1 if you have the `sscanf' function. */
#undef HAVE_SSCANF
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdio.h> header file. */
#undef HAVE_STDIO_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strrchr' function. */
#undef HAVE_STRRCHR
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_DIR_H
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_NDIR_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the `timegm' function. */
#undef HAVE_TIMEGM
/* Define to 1 if you have the <time.h> header file. */
#undef HAVE_TIME_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `vfprintf' function. */
#undef HAVE_VFPRINTF
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
/* Define to 1 if you have the `vsprintf' function. */
#undef HAVE_VSPRINTF
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* The size of `size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,791 +0,0 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by 'PROGRAMS ARGS'.
object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
# Get the directory component of the given path, and save it in the
# global variables '$dir'. Note that this directory component will
# be either empty or ending with a '/' character. This is deliberate.
set_dir_from ()
{
case $1 in
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
*) dir=;;
esac
}
# Get the suffix-stripped basename of the given path, and save it the
# global variable '$base'.
set_base_from ()
{
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
}
# If no dependency file was actually created by the compiler invocation,
# we still have to create a dummy depfile, to avoid errors with the
# Makefile "include basename.Plo" scheme.
make_dummy_depfile ()
{
echo "#dummy" > "$depfile"
}
# Factor out some common post-processing of the generated depfile.
# Requires the auxiliary global variable '$tmpdepfile' to be set.
aix_post_process_depfile ()
{
# If the compiler actually managed to produce a dependency file,
# post-process it.
if test -f "$tmpdepfile"; then
# Each line is of the form 'foo.o: dependency.h'.
# Do two passes, one to just change these to
# $object: dependency.h
# and one to simply output
# dependency.h:
# which is needed to avoid the deleted-header problem.
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
} > "$depfile"
rm -f "$tmpdepfile"
else
make_dummy_depfile
fi
}
# A tabulation character.
tab=' '
# A newline character.
nl='
'
# Character ranges might be problematic outside the C locale.
# These definitions help.
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower=abcdefghijklmnopqrstuvwxyz
digits=0123456789
alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Avoid interferences from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvc7
fi
if test "$depmode" = xlc; then
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
gccflag=-qmakedep=gcc,-MF
depmode=gcc
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say). Also, it might not be
## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The second -e expression handles DOS-style file names with drive
# letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
| tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
aix_post_process_depfile
;;
tcc)
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
# FIXME: That version still under development at the moment of writing.
# Make that this statement remains true also for stable, released
# versions.
# It will wrap lines (doesn't matter whether long or short) with a
# trailing '\', as in:
#
# foo.o : \
# foo.c \
# foo.h \
#
# It will put a trailing '\' even on the last line, and will use leading
# spaces rather than leading tabs (at least since its commit 0394caf7
# "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
# We have to change lines of the first kind to '$object: \'.
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
# And for each line of the second kind, we have to emit a 'dep.h:'
# dummy dependency, to avoid the deleted-header problem.
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
## The order of this option in the case statement is important, since the
## shell code in configure will try each of these formats in the order
## listed in this file. A plain '-MD' option would be understood by many
## compilers, so we must ensure this comes after the gcc and icc options.
pgcc)
# Portland's C compiler understands '-MD'.
# Will always output deps to 'file.d' where file is the root name of the
# source file under compilation, even if file resides in a subdirectory.
# The object file name does not affect the name of the '.d' file.
# pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
set_base_from "$source"
tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
lockdir=$base.d-lock
trap "
echo '$0: caught signal, cleaning up...' >&2
rmdir '$lockdir'
exit 1
" 1 2 13 15
numtries=100
i=$numtries
while test $i -gt 0; do
# mkdir is a portable test-and-set.
if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
rmdir "$lockdir"
break
else
# If the lock is being held by a different process, wait
# until the winning process is done or we timeout.
while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
fi
i=`expr $i - 1`
done
trap - 1 2 13 15
if test $i -le 0; then
echo "$0: failed to acquire lock after $numtries attempts" >&2
echo "$0: check lockdir '$lockdir'" >&2
exit 1
fi
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
# Libtool generates 2 separate objects for the 2 libraries. These
# two compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir$base.o.d # libtool 1.5
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
# Same post-processing that is required for AIX mode.
aix_post_process_depfile
;;
msvc7)
if test "$libtool" = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/'"$tab"'/
G
p
}' >> "$depfile"
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this sed invocation
# correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process the last invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed '1,2d' "$tmpdepfile" \
| tr ' ' "$nl" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E \
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
| sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -1,108 +0,0 @@
NULL =
SUBDIRS=api
TARGET_DIR=@XMLSEC_DOCDIR@
EXTRA_DIST=\
$(builddir)/images \
$(builddir)/*.html \
$(builddir)/*.ico \
$(builddir)/xmlsec.xsl \
$(NULL)
XMLSEC1_MAN=$(top_builddir)/man/xmlsec1.1
XMLSEC_HTML=$(builddir)/xmlsec-man.html
all: docs
# docs is legacy
docs: docs-copy man-docs docs-format
docs-copy:
@( \
echo "Copying docs..."; \
if [ z"$(srcdir)" != z"$(builddir)" ]; \
then \
$(CP) -ru $(srcdir)/*.html $(srcdir)/*.ico $(srcdir)/images $(builddir)/ ; \
chmod u+w $(builddir)/*.html ; \
chmod u+w $(builddir)/*.ico ; \
chmod -R u+w $(builddir)/images ; \
fi \
)
# if we build docs then we also have xsltproc
if BUILD_MAN_DOCS
man-docs: $(XMLSEC_HTML) docs-copy
$(XMLSEC_HTML): docs-copy $(XMLSEC1_MAN)
$(MAN2HTML) $(XMLSEC1_MAN) | \
grep -v '^Content-type: text/html' | \
tr "[:cntrl:]" " " > \
$(XMLSEC_HTML)
else
# do nothing, we aready copied this file
man-docs:
endif
if HAS_XSLTPROC
docs-format:
@(echo "Formatting html documents"; \
for i in `find $(builddir) -name "*.html" -print`; \
do \
top_folder=`echo $$i | sed 's#/[^/]*$$#/#' | sed 's#\./##' | \
sed 's#[^/]*/#../#g'`; \
echo "Processing $$i (topfolder='$$top_folder')"; \
$(XSLTPROC) --html --stringparam topfolder "$$top_folder" \
--output $$i.tmp $(srcdir)/xmlsec.xsl $$i; \
if [ $$? != 0 ]; \
then \
echo "ERROR: processing file $$i"; \
exit 1; \
fi; \
mv $$i.tmp $$i; \
done)
@(echo "Cleaning html documents"; \
for i in `find $(builddir) -name "*.html" -print`; \
do \
echo Cleaning $$i ; \
sed 's/\xA0/ /g' $$i > $$i.tmp ; \
mv $$i.tmp $$i ; \
done)
else
# do nothing
docs-format:
endif
clean-local:
-rm -f *.stamp
( if [ z"$(srcdir)" != z"$(builddir)" ] ; then \
chmod -R u+w $(builddir)/images && rm -rf $(builddir)/images ; \
chmod -R u+w $(builddir)/src && rm -rf $(builddir)/src ; \
(for i in `find $(builddir) -name "*.html" -print` ; do \
echo "Removing files '$$i' ... " ; \
chmod -R u+w $$i && rm -f $$i ; \
done ) ; \
(for i in `find $(builddir) -name "*.ico" -print` ; do \
echo "Removing files '$$i' ... " ; \
chmod -R u+w $$i && rm -f $$i ; \
done ) ; \
fi ; )
distclean-local: clean-local
install-data-local:
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/images
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/api
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/api/images
-@INSTALL@ -m 0644 $(builddir)/*.html $(DESTDIR)$(TARGET_DIR)
-@INSTALL@ -m 0644 $(builddir)/*.ico $(DESTDIR)$(TARGET_DIR)
-@INSTALL@ -m 0644 $(builddir)/images/*.gif $(builddir)/images/*.png $(DESTDIR)$(TARGET_DIR)/images
-@INSTALL@ -m 0644 $(builddir)/api/*.html $(builddir)/api/*.png $(builddir)/api/*.sgml $(DESTDIR)$(TARGET_DIR)/api
-@INSTALL@ -m 0644 $(builddir)/api/images/*.png $(DESTDIR)$(TARGET_DIR)/api/images
uninstall-local:
@rm -rf $(DESTDIR)$(TARGET_DIR)

View File

@ -1,820 +0,0 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CP = @CP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCRYPT_CFLAGS = @GCRYPT_CFLAGS@
GCRYPT_CRYPTO_LIB = @GCRYPT_CRYPTO_LIB@
GCRYPT_LIBS = @GCRYPT_LIBS@
GCRYPT_MIN_VERSION = @GCRYPT_MIN_VERSION@
GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
GNUTLS_CRYPTO_LIB = @GNUTLS_CRYPTO_LIB@
GNUTLS_LIBS = @GNUTLS_LIBS@
GNUTLS_MIN_VERSION = @GNUTLS_MIN_VERSION@
GREP = @GREP@
GTKDOC_MKDB = @GTKDOC_MKDB@
GTKDOC_MKHTML = @GTKDOC_MKHTML@
GTKDOC_MKTMPL = @GTKDOC_MKTMPL@
GTKDOC_SCAN = @GTKDOC_SCAN@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML_CFLAGS = @LIBXML_CFLAGS@
LIBXML_CONFIG = @LIBXML_CONFIG@
LIBXML_LIBS = @LIBXML_LIBS@
LIBXML_MIN_VERSION = @LIBXML_MIN_VERSION@
LIBXSLT_CFLAGS = @LIBXSLT_CFLAGS@
LIBXSLT_CONFIG = @LIBXSLT_CONFIG@
LIBXSLT_LIBS = @LIBXSLT_LIBS@
LIBXSLT_MIN_VERSION = @LIBXSLT_MIN_VERSION@
LIBXSLT_PC_FILE_COND = @LIBXSLT_PC_FILE_COND@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN2HTML = @MAN2HTML@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MOZILLA_MIN_VERSION = @MOZILLA_MIN_VERSION@
MSCRYPTO_CFLAGS = @MSCRYPTO_CFLAGS@
MSCRYPTO_CRYPTO_LIB = @MSCRYPTO_CRYPTO_LIB@
MSCRYPTO_LIBS = @MSCRYPTO_LIBS@
MV = @MV@
NM = @NM@
NMEDIT = @NMEDIT@
NSPR_MIN_VERSION = @NSPR_MIN_VERSION@
NSPR_PACKAGE = @NSPR_PACKAGE@
NSS_CFLAGS = @NSS_CFLAGS@
NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
NSS_LIBS = @NSS_LIBS@
NSS_MIN_VERSION = @NSS_MIN_VERSION@
NSS_PACKAGE = @NSS_PACKAGE@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
OPENSSL_LIBS = @OPENSSL_LIBS@
OPENSSL_MIN_VERSION = @OPENSSL_MIN_VERSION@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TAR = @TAR@
VERSION = @VERSION@
XMLSEC_APP_DEFINES = @XMLSEC_APP_DEFINES@
XMLSEC_CFLAGS = @XMLSEC_CFLAGS@
XMLSEC_CORE_CFLAGS = @XMLSEC_CORE_CFLAGS@
XMLSEC_CORE_LIBS = @XMLSEC_CORE_LIBS@
XMLSEC_CRYPTO_CFLAGS = @XMLSEC_CRYPTO_CFLAGS@
XMLSEC_CRYPTO_DISABLED_LIST = @XMLSEC_CRYPTO_DISABLED_LIST@
XMLSEC_CRYPTO_EXTRA_LDFLAGS = @XMLSEC_CRYPTO_EXTRA_LDFLAGS@
XMLSEC_CRYPTO_LIB = @XMLSEC_CRYPTO_LIB@
XMLSEC_CRYPTO_LIBS = @XMLSEC_CRYPTO_LIBS@
XMLSEC_CRYPTO_LIST = @XMLSEC_CRYPTO_LIST@
XMLSEC_CRYPTO_PC_FILES_LIST = @XMLSEC_CRYPTO_PC_FILES_LIST@
XMLSEC_DEFAULT_CRYPTO = @XMLSEC_DEFAULT_CRYPTO@
XMLSEC_DEFINES = @XMLSEC_DEFINES@
XMLSEC_DL_INCLUDES = @XMLSEC_DL_INCLUDES@
XMLSEC_DL_LIBS = @XMLSEC_DL_LIBS@
XMLSEC_DOCDIR = @XMLSEC_DOCDIR@
XMLSEC_EXTRA_LDFLAGS = @XMLSEC_EXTRA_LDFLAGS@
XMLSEC_GCRYPT_CFLAGS = @XMLSEC_GCRYPT_CFLAGS@
XMLSEC_GCRYPT_LIBS = @XMLSEC_GCRYPT_LIBS@
XMLSEC_GNUTLS_CFLAGS = @XMLSEC_GNUTLS_CFLAGS@
XMLSEC_GNUTLS_LIBS = @XMLSEC_GNUTLS_LIBS@
XMLSEC_LIBDIR = @XMLSEC_LIBDIR@
XMLSEC_LIBS = @XMLSEC_LIBS@
XMLSEC_NO_AES = @XMLSEC_NO_AES@
XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_DES = @XMLSEC_NO_DES@
XMLSEC_NO_DSA = @XMLSEC_NO_DSA@
XMLSEC_NO_GCRYPT = @XMLSEC_NO_GCRYPT@
XMLSEC_NO_GNUTLS = @XMLSEC_NO_GNUTLS@
XMLSEC_NO_GOST = @XMLSEC_NO_GOST@
XMLSEC_NO_GOST2012 = @XMLSEC_NO_GOST2012@
XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
XMLSEC_NO_MSCRYPTO = @XMLSEC_NO_MSCRYPTO@
XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
XMLSEC_NO_OPENSSL = @XMLSEC_NO_OPENSSL@
XMLSEC_NO_RIPEMD160 = @XMLSEC_NO_RIPEMD160@
XMLSEC_NO_RSA = @XMLSEC_NO_RSA@
XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
XMLSEC_NO_X509 = @XMLSEC_NO_X509@
XMLSEC_NO_XMLDSIG = @XMLSEC_NO_XMLDSIG@
XMLSEC_NO_XMLENC = @XMLSEC_NO_XMLENC@
XMLSEC_NSS_CFLAGS = @XMLSEC_NSS_CFLAGS@
XMLSEC_NSS_LIBS = @XMLSEC_NSS_LIBS@
XMLSEC_OPENSSL_CFLAGS = @XMLSEC_OPENSSL_CFLAGS@
XMLSEC_OPENSSL_LIBS = @XMLSEC_OPENSSL_LIBS@
XMLSEC_PACKAGE = @XMLSEC_PACKAGE@
XMLSEC_STATIC_BINARIES = @XMLSEC_STATIC_BINARIES@
XMLSEC_VERSION = @XMLSEC_VERSION@
XMLSEC_VERSION_INFO = @XMLSEC_VERSION_INFO@
XMLSEC_VERSION_MAJOR = @XMLSEC_VERSION_MAJOR@
XMLSEC_VERSION_MINOR = @XMLSEC_VERSION_MINOR@
XMLSEC_VERSION_SAFE = @XMLSEC_VERSION_SAFE@
XMLSEC_VERSION_SUBMINOR = @XMLSEC_VERSION_SUBMINOR@
XSLTPROC = @XSLTPROC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
NULL =
SUBDIRS = api
TARGET_DIR = @XMLSEC_DOCDIR@
EXTRA_DIST = \
$(builddir)/images \
$(builddir)/*.html \
$(builddir)/*.ico \
$(builddir)/xmlsec.xsl \
$(NULL)
XMLSEC1_MAN = $(top_builddir)/man/xmlsec1.1
XMLSEC_HTML = $(builddir)/xmlsec-man.html
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu docs/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-data-local
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-local
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic clean-libtool clean-local \
cscopelist-am ctags ctags-am distclean distclean-generic \
distclean-libtool distclean-local distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-data-local install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am uninstall-local
.PRECIOUS: Makefile
all: docs
# docs is legacy
docs: docs-copy man-docs docs-format
docs-copy:
@( \
echo "Copying docs..."; \
if [ z"$(srcdir)" != z"$(builddir)" ]; \
then \
$(CP) -ru $(srcdir)/*.html $(srcdir)/*.ico $(srcdir)/images $(builddir)/ ; \
chmod u+w $(builddir)/*.html ; \
chmod u+w $(builddir)/*.ico ; \
chmod -R u+w $(builddir)/images ; \
fi \
)
# if we build docs then we also have xsltproc
@BUILD_MAN_DOCS_TRUE@man-docs: $(XMLSEC_HTML) docs-copy
@BUILD_MAN_DOCS_TRUE@$(XMLSEC_HTML): docs-copy $(XMLSEC1_MAN)
@BUILD_MAN_DOCS_TRUE@ $(MAN2HTML) $(XMLSEC1_MAN) | \
@BUILD_MAN_DOCS_TRUE@ grep -v '^Content-type: text/html' | \
@BUILD_MAN_DOCS_TRUE@ tr "[:cntrl:]" " " > \
@BUILD_MAN_DOCS_TRUE@ $(XMLSEC_HTML)
# do nothing, we aready copied this file
@BUILD_MAN_DOCS_FALSE@man-docs:
@HAS_XSLTPROC_TRUE@docs-format:
@HAS_XSLTPROC_TRUE@ @(echo "Formatting html documents"; \
@HAS_XSLTPROC_TRUE@ for i in `find $(builddir) -name "*.html" -print`; \
@HAS_XSLTPROC_TRUE@ do \
@HAS_XSLTPROC_TRUE@ top_folder=`echo $$i | sed 's#/[^/]*$$#/#' | sed 's#\./##' | \
@HAS_XSLTPROC_TRUE@ sed 's#[^/]*/#../#g'`; \
@HAS_XSLTPROC_TRUE@ echo "Processing $$i (topfolder='$$top_folder')"; \
@HAS_XSLTPROC_TRUE@ $(XSLTPROC) --html --stringparam topfolder "$$top_folder" \
@HAS_XSLTPROC_TRUE@ --output $$i.tmp $(srcdir)/xmlsec.xsl $$i; \
@HAS_XSLTPROC_TRUE@ if [ $$? != 0 ]; \
@HAS_XSLTPROC_TRUE@ then \
@HAS_XSLTPROC_TRUE@ echo "ERROR: processing file $$i"; \
@HAS_XSLTPROC_TRUE@ exit 1; \
@HAS_XSLTPROC_TRUE@ fi; \
@HAS_XSLTPROC_TRUE@ mv $$i.tmp $$i; \
@HAS_XSLTPROC_TRUE@ done)
@HAS_XSLTPROC_TRUE@ @(echo "Cleaning html documents"; \
@HAS_XSLTPROC_TRUE@ for i in `find $(builddir) -name "*.html" -print`; \
@HAS_XSLTPROC_TRUE@ do \
@HAS_XSLTPROC_TRUE@ echo Cleaning $$i ; \
@HAS_XSLTPROC_TRUE@ sed 's/\xA0/ /g' $$i > $$i.tmp ; \
@HAS_XSLTPROC_TRUE@ mv $$i.tmp $$i ; \
@HAS_XSLTPROC_TRUE@ done)
# do nothing
@HAS_XSLTPROC_FALSE@docs-format:
clean-local:
-rm -f *.stamp
( if [ z"$(srcdir)" != z"$(builddir)" ] ; then \
chmod -R u+w $(builddir)/images && rm -rf $(builddir)/images ; \
chmod -R u+w $(builddir)/src && rm -rf $(builddir)/src ; \
(for i in `find $(builddir) -name "*.html" -print` ; do \
echo "Removing files '$$i' ... " ; \
chmod -R u+w $$i && rm -f $$i ; \
done ) ; \
(for i in `find $(builddir) -name "*.ico" -print` ; do \
echo "Removing files '$$i' ... " ; \
chmod -R u+w $$i && rm -f $$i ; \
done ) ; \
fi ; )
distclean-local: clean-local
install-data-local:
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/images
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/api
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)/api/images
-@INSTALL@ -m 0644 $(builddir)/*.html $(DESTDIR)$(TARGET_DIR)
-@INSTALL@ -m 0644 $(builddir)/*.ico $(DESTDIR)$(TARGET_DIR)
-@INSTALL@ -m 0644 $(builddir)/images/*.gif $(builddir)/images/*.png $(DESTDIR)$(TARGET_DIR)/images
-@INSTALL@ -m 0644 $(builddir)/api/*.html $(builddir)/api/*.png $(builddir)/api/*.sgml $(DESTDIR)$(TARGET_DIR)/api
-@INSTALL@ -m 0644 $(builddir)/api/images/*.png $(DESTDIR)$(TARGET_DIR)/api/images
uninstall-local:
@rm -rf $(DESTDIR)$(TARGET_DIR)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,326 +0,0 @@
#
#
#
NULL=
MODULE=xmlsec
SOURCE_DIR=$(top_srcdir)/src
SOURCE_DIR2=$(top_builddir)/src
INCLUDE_DIR=$(top_srcdir)/include
INCLUDE_DIR2=$(top_builddir)/include
SCAN_DIR=$(builddir)
SGML_DIR=$(builddir)/sgml.tmp
XML_DIR=$(builddir)/xml.tmp
EXAMPLES_DIR=$(SGML_DIR)/examples
SOURCE_CODE_DIR=$(builddir)/code
# We need to copy some files to make gkdoc happy that
# everything is in one folder
TMPL_DIR=$(builddir)/tmpl
TMPL_SRC_DIR=$(srcdir)/tmpl
MAIN_SGML_FILE=$(SGML_DIR)/xmlsec-main.sgml
MAIN_SGML_SRC_FILE=$(srcdir)/src/xmlsec.sgml
SGML_CHAPTERS_DIR=$(SGML_DIR)/chapters
SGML_CHAPTERS_SRC_DIR=$(srcdir)/src/chapters
EXTRA_DIST = \
$(TMPL_DIR) \
$(srcdir)/src \
$(srcdir)/images \
$(NULL)
SOURCE_FILES_TO_COPY = \
$(srcdir)/src \
$(srcdir)/images \
$(srcdir)/*.html \
$(srcdir)/*.png \
$(NULL)
#
# We need to pre-process original source files
# because gtkdoc does not understand some C features
#
SOURCE_CODE_FILES=\
$(shell find $(SOURCE_DIR) -name '*.c' -print ) \
$(shell find $(SOURCE_DIR2) -name '*.c' -print ) \
$(shell find $(INCLUDE_DIR) -name '*.h' -a ! -name "symbols.h" -print ) \
$(shell find $(INCLUDE_DIR2) -name '*.h' -a ! -name "symbols.h" -print )
EXAMPLES_SOURCE_DIR=$(top_srcdir)/examples
EXAMPLES_SOURCE_FILES=\
$(shell find $(EXAMPLES_SOURCE_DIR) -name '*.c' -print) \
$(shell find $(EXAMPLES_SOURCE_DIR) -name '*.xml' -print)
#
# This script removes gtkdoc crap from final html
#
REMOVE_GTKDOCLINK=$(top_srcdir)/scripts/remove-gtkdoclink.pl
# docs is legacy
all: docs
# if build API docs, then we also have xsltproc
if BUILD_API_DOCS
docs: html-cleanup
else
docs:
@( \
echo "Copying api-docs..."; \
if [ z"$(srcdir)" != z"$(builddir)" ]; \
then \
$(CP) -ru $(SOURCE_FILES_TO_COPY) $(builddir)/ ; \
fi \
)
endif
html-cleanup: html
( echo "Cleaning up result files"; \
$(PERL) $(REMOVE_GTKDOCLINK) `find . -name "*.html" -print` \
)
# need to cleanup "bad" chars
html: sgml $(MAIN_SGML_FILE) $(SGML_CHAPTERS_DIR) xmlsec-index
$(GTKDOC_MKHTML) xmlsec $(MAIN_SGML_FILE)
$(SGML_CHAPTERS_DIR): $(SGML_CHAPTERS_SRC_DIR) $(SGML_CHAPTERS_DIR)/.sentinel
$(CP) -ru $(SGML_CHAPTERS_SRC_DIR)/* $(SGML_CHAPTERS_DIR)
$(MAIN_SGML_FILE): $(MAIN_SGML_SRC_FILE)
$(CP) -u $(MAIN_SGML_SRC_FILE) $(MAIN_SGML_FILE)
#
# Prepeare sgml files from sources for each library. We are also
# doing some "magic" here by automatically adding links to XML DSig and
# XML Enc specification, we also remove "Ptr" from the end of the link
# targets to make more references.
#
# We also fix a bunch of stupid errors from gtkdoc
#
sgml: sgml-base
(for i in `find $(SGML_DIR) -name "*.sgml" -print` ; do \
echo "Fixing up '$$i'" ; \
cat $$i | \
sed 's!\(<dsig:\)\([^/]*\)\(\/>\)!\&lt;dsig:\2\/\&gt;!g' | \
sed 's!\(<enc:\)\([^/]*\)\(\/>\)!\&lt;enc:\2\/\&gt;!g' | \
sed 's!\(<dsig:\)\(\w*\)\(>\)!\&lt;dsig:\2\/\&gt;!g' | \
sed 's!\(<enc:\)\(\w*\)\(>\)!\&lt;enc:\2\/\&gt;!g' | \
sed 's!\(&lt;dsig:\)\([^/]*\)\(\/&gt;\)!<ulink URL=\"http://www.w3.org/TR/xmldsig-core/#sec-\2\">\1\2\3</ulink>!g' | \
sed 's!\(&lt;enc:\)\([^/]*\)\(\/&gt;\)!<ulink URL=\"http://www.w3.org/TR/xmlenc-core/#sec-\2\">\1\2\3</ulink>!g' | \
sed 's!<para \/>!<para></para>!g' | \
sed 's!linkend=\"\(.*\)Ptr\"!linkend=\"\1\"!g' | \
sed 's!<colspec [^/]*\/>!!g' | \
sed 's!<programlisting language="C"!<programlisting!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!<\/title><\/refsect1>\n!<\/title><para><\/para><\/refsect1>!g' | \
$(PERL) -pe 's!para>\n!para>!g' > \
$$i.tmp; \
mv -f $$i.tmp $$i; \
done);
sgml-base: templates $(SGML_DIR)/.sentinel
$(GTKDOC_MKDB) --module=xmlsec \
--main-sgml-file=$(SGML_DIR)/xmlsec-base.sgml \
--output-dir=$(SGML_DIR)/ \
--tmpl-dir=$(TMPL_DIR)/base \
--source-dir=$(SOURCE_CODE_DIR)/src/base \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
$(GTKDOC_MKDB) --module=xmlsec-openssl \
--main-sgml-file=$(SGML_DIR)/xmlsec-openssl.sgml \
--tmpl-dir=$(TMPL_DIR)/openssl \
--output-dir=$(SGML_DIR)/openssl \
--source-dir=$(SOURCE_CODE_DIR)/src/openssl \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
$(GTKDOC_MKDB) --module=xmlsec-gnutls \
--main-sgml-file=$(SGML_DIR)/xmlsec-gnutls.sgml \
--tmpl-dir=$(TMPL_DIR)/gnutls \
--output-dir=$(SGML_DIR)/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
$(GTKDOC_MKDB) --module=xmlsec-gcrypt \
--main-sgml-file=$(SGML_DIR)/xmlsec-gcrypt.sgml \
--tmpl-dir=$(TMPL_DIR)/gcrypt \
--output-dir=$(SGML_DIR)/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
$(GTKDOC_MKDB) --module=xmlsec-nss \
--main-sgml-file=$(SGML_DIR)/xmlsec-nss.sgml \
--tmpl-dir=$(TMPL_DIR)/nss \
--output-dir=$(SGML_DIR)/nss \
--source-dir=$(SOURCE_CODE_DIR)/src/nss \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
$(GTKDOC_MKDB) --module=xmlsec-mscrypto \
--main-sgml-file=$(SGML_DIR)/xmlsec-mscrypto.sgml \
--tmpl-dir=$(TMPL_DIR)/mscrypto \
--output-dir=$(SGML_DIR)/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
templates: scan templates-copy
$(GTKDOC_MKTMPL) --module=xmlsec \
--output-dir=$(TMPL_DIR)/base
$(GTKDOC_MKTMPL) --module=xmlsec-openssl \
--output-dir=$(TMPL_DIR)/openssl
$(GTKDOC_MKTMPL) --module=xmlsec-gnutls \
--output-dir=$(TMPL_DIR)/gnutls
$(GTKDOC_MKTMPL) --module=xmlsec-gcrypt \
--output-dir=$(TMPL_DIR)/gcrypt
$(GTKDOC_MKTMPL) --module=xmlsec-nss \
--output-dir=$(TMPL_DIR)/nss
$(GTKDOC_MKTMPL) --module=xmlsec-mscrypto \
--output-dir=$(TMPL_DIR)/mscrypto
# make sure to run chmod since we will update templates
templates-copy: $(TMPL_SRC_DIR) $(TMPL_DIR)/.sentinel
@echo "Copying original template files into '$(TMPL_DIR)' ..."
( if [ z"$(TMPL_DIR)" != z"$(TMPL_SRC_DIR)" ] ; then \
$(CP) -ru $(TMPL_SRC_DIR)/* $(TMPL_DIR)/ ; \
fi ; )
chmod -R u+w $(TMPL_DIR)
scan: SOURCE_CODEs example_sources
$(GTKDOC_SCAN) --module=xmlsec \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/base \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
$(GTKDOC_SCAN) --module=xmlsec-openssl \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/openssl \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
$(GTKDOC_SCAN) --module=xmlsec-gnutls \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
$(GTKDOC_SCAN) --module=xmlsec-gcrypt \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
$(GTKDOC_SCAN) --module=xmlsec-nss \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/nss \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
$(GTKDOC_SCAN) --module=xmlsec-mscrypto \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
#
# Prepare source files by coping them to "code" folder and
# removing XMLSEC_EXPORT_* stuff that makes gtkdoc crazy
#
SOURCE_CODEs: $(SOURCE_CODE_FILES) $(SOURCE_CODE_DIR)/.sentinel SOURCE_CODEs_cleanup
@echo "Preprocessing source files into '$(SOURCE_CODE_DIR)' ..."
@mkdir -p $(SOURCE_CODE_DIR)/src/base $(SOURCE_CODE_DIR)/include/xmlsec/base
@( \
for i in $(SOURCE_CODE_FILES) ; do \
folder_name=`echo "$$i" | \
sed 's#$(top_srcdir)/##' | \
sed 's#$(top_builddir)/##' | \
sed 's#/[^/]*$$##'`; \
file_name=`echo "$$i" | \
sed 's#.*/##'`; \
mkdir -p "$(SOURCE_CODE_DIR)/$$folder_name"; \
cat "$$i" | \
sed 's/#if.*//' | \
sed 's/#el.*//' | \
sed 's/#end.*//' | \
sed 's/XMLSEC_CRYPTO_EXPORT//' | \
sed 's/XMLSEC_EXPORT_VAR//' | \
sed 's/XMLSEC_EXPORT//' | \
sed 's/XMLSEC_ERRORS_PRINTF_ATTRIBUTE//' > \
$(SOURCE_CODE_DIR)/$$folder_name/$$file_name; \
done);
-@mv -f $(SOURCE_CODE_DIR)/src/*.c $(SOURCE_CODE_DIR)/src/base
-@mv -f $(SOURCE_CODE_DIR)/include/xmlsec/*.h $(SOURCE_CODE_DIR)/include/xmlsec/base
-@rm -f $(SOURCE_CODE_DIR)/include/xmlsec/*/symbols.h
SOURCE_CODEs_cleanup: $(SOURCE_CODE_DIR)/.sentinel
@rm -rf $(SOURCE_CODE_DIR)/*
#
# Create index for all functions. For macros and defines need to add -CAPS suffix
#
xmlsec-index: scan $(SGML_DIR)/.sentinel
@grep -h '<NAME>.*</NAME>' $(SCAN_DIR)/xmlsec-*decl.txt | \
grep -v '<NAME>extern</NAME>' | \
sort -u | \
sed 's#_#-#g' | \
sed 's#<NAME>\([^-]*\)-\([^<]*\)</NAME>#<listitem><para><link linkend=\"\1-\2-CAPS\">\1-\2</link></para></listitem>#g' | \
sed 's#<NAME>\([^<]*\)</NAME>#<listitem><para><link linkend=\"\1\">\1</link></para></listitem>#g' > \
$(SGML_DIR)/xmlsec-index.sgml
#
# The following code converts C example file to sgml RefEntry files.
# We get file title from a string "XML Security Library example: ..."
# which is usually placed at the top of the file. Also all "unsafe" xml
# characters (<, >, &) are escaped.
#
example_sources: $(EXAMPLES_DIR)/.sentinel
@echo "Preprocessing example source files into '$(EXAMPLES_DIR)' ..."
@rm -rf $(EXAMPLES_DIR)/*
@(for i in $(EXAMPLES_SOURCE_FILES) ; do \
file_name=`echo $$i | sed 's#.*/##' | sed 's#\..*$$##'`; \
file_ext=`echo $$i | sed 's#.*/##' | sed 's#.*\.##'`; \
echo Converting $$file_name.$$file_ext to $$file_name.sgml ...; \
file_title=`cat $$i | grep 'XML Security Library example: ' | sed 's#^.*: *##'`; \
echo "<sect2 id=\"xmlsec-example-$$file_name\" >" > \
$(EXAMPLES_DIR)/$$file_name.sgml; \
echo "<title>$$file_name.$$file_ext</title><para><informalexample><programlisting>" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
cat $$i | \
sed "s#&#\&amp;#g" | \
sed "s#<#\&lt;#g" | \
sed "s#>#\&gt;#g" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
echo "</programlisting></informalexample></para></sect2>" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
done);
# A single pattern rule will create all appropriate folders as required
# otherwise make (annoyingly) deletes it
.PRECIOUS: %/.sentinel
%/.sentinel:
@echo "Creating folder '${@D}' ..."
mkdir -p ${@D}
touch $@
dist-hook:
@cp -p $(srcdir)/*.html $(srcdir)/*.png $(distdir)/
(for i in `find $(distdir) -name ".sentinel" -print` ; do \
echo "Removing some files '$$i' before dist ... " ; \
rm $$i ; \
done )
(for i in `find $(distdir) -name "*.sgml.bak" -print` ; do \
echo "Removing some files '$$i' before dist ... " ; \
rm "$$i" ; \
done ; )
clean-local:
-rm -rf $(SOURCE_CODE_DIR) $(EXAMPLES_DIR) $(SCAN_DIR)/*.txt $(SGML_DIR) $(XML_DIR)
-rm -f *.stamp *.types *.css index.sgml
( if [ z"$(TMPL_SRC_DIR)" != z"$(TMPL_DIR)" ] && [ -d "$(TMPL_DIR)" ] ; then \
chmod -R u+w $(TMPL_DIR) && rm -rf $(TMPL_DIR) ; \
fi ; )
( if [ z"$(builddir)" != z"$(srcdir)" ] ; then \
chmod -R u+w $(builddir)/src && rm -rf $(builddir)/src ; \
chmod -R u+w $(builddir)/images && rm -rf $(builddir)/images ; \
chmod -R u+w $(builddir)/*.png && rm -rf $(builddir)/*.png ; \
fi ; )
distclean-local: clean-local
maintainer-clean-local: clean-local
-rm -f *.html

View File

@ -1,861 +0,0 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs/api
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CP = @CP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GCRYPT_CFLAGS = @GCRYPT_CFLAGS@
GCRYPT_CRYPTO_LIB = @GCRYPT_CRYPTO_LIB@
GCRYPT_LIBS = @GCRYPT_LIBS@
GCRYPT_MIN_VERSION = @GCRYPT_MIN_VERSION@
GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
GNUTLS_CRYPTO_LIB = @GNUTLS_CRYPTO_LIB@
GNUTLS_LIBS = @GNUTLS_LIBS@
GNUTLS_MIN_VERSION = @GNUTLS_MIN_VERSION@
GREP = @GREP@
GTKDOC_MKDB = @GTKDOC_MKDB@
GTKDOC_MKHTML = @GTKDOC_MKHTML@
GTKDOC_MKTMPL = @GTKDOC_MKTMPL@
GTKDOC_SCAN = @GTKDOC_SCAN@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBXML_CFLAGS = @LIBXML_CFLAGS@
LIBXML_CONFIG = @LIBXML_CONFIG@
LIBXML_LIBS = @LIBXML_LIBS@
LIBXML_MIN_VERSION = @LIBXML_MIN_VERSION@
LIBXSLT_CFLAGS = @LIBXSLT_CFLAGS@
LIBXSLT_CONFIG = @LIBXSLT_CONFIG@
LIBXSLT_LIBS = @LIBXSLT_LIBS@
LIBXSLT_MIN_VERSION = @LIBXSLT_MIN_VERSION@
LIBXSLT_PC_FILE_COND = @LIBXSLT_PC_FILE_COND@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN2HTML = @MAN2HTML@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MOZILLA_MIN_VERSION = @MOZILLA_MIN_VERSION@
MSCRYPTO_CFLAGS = @MSCRYPTO_CFLAGS@
MSCRYPTO_CRYPTO_LIB = @MSCRYPTO_CRYPTO_LIB@
MSCRYPTO_LIBS = @MSCRYPTO_LIBS@
MV = @MV@
NM = @NM@
NMEDIT = @NMEDIT@
NSPR_MIN_VERSION = @NSPR_MIN_VERSION@
NSPR_PACKAGE = @NSPR_PACKAGE@
NSS_CFLAGS = @NSS_CFLAGS@
NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
NSS_LIBS = @NSS_LIBS@
NSS_MIN_VERSION = @NSS_MIN_VERSION@
NSS_PACKAGE = @NSS_PACKAGE@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
OPENSSL_LIBS = @OPENSSL_LIBS@
OPENSSL_MIN_VERSION = @OPENSSL_MIN_VERSION@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TAR = @TAR@
VERSION = @VERSION@
XMLSEC_APP_DEFINES = @XMLSEC_APP_DEFINES@
XMLSEC_CFLAGS = @XMLSEC_CFLAGS@
XMLSEC_CORE_CFLAGS = @XMLSEC_CORE_CFLAGS@
XMLSEC_CORE_LIBS = @XMLSEC_CORE_LIBS@
XMLSEC_CRYPTO_CFLAGS = @XMLSEC_CRYPTO_CFLAGS@
XMLSEC_CRYPTO_DISABLED_LIST = @XMLSEC_CRYPTO_DISABLED_LIST@
XMLSEC_CRYPTO_EXTRA_LDFLAGS = @XMLSEC_CRYPTO_EXTRA_LDFLAGS@
XMLSEC_CRYPTO_LIB = @XMLSEC_CRYPTO_LIB@
XMLSEC_CRYPTO_LIBS = @XMLSEC_CRYPTO_LIBS@
XMLSEC_CRYPTO_LIST = @XMLSEC_CRYPTO_LIST@
XMLSEC_CRYPTO_PC_FILES_LIST = @XMLSEC_CRYPTO_PC_FILES_LIST@
XMLSEC_DEFAULT_CRYPTO = @XMLSEC_DEFAULT_CRYPTO@
XMLSEC_DEFINES = @XMLSEC_DEFINES@
XMLSEC_DL_INCLUDES = @XMLSEC_DL_INCLUDES@
XMLSEC_DL_LIBS = @XMLSEC_DL_LIBS@
XMLSEC_DOCDIR = @XMLSEC_DOCDIR@
XMLSEC_EXTRA_LDFLAGS = @XMLSEC_EXTRA_LDFLAGS@
XMLSEC_GCRYPT_CFLAGS = @XMLSEC_GCRYPT_CFLAGS@
XMLSEC_GCRYPT_LIBS = @XMLSEC_GCRYPT_LIBS@
XMLSEC_GNUTLS_CFLAGS = @XMLSEC_GNUTLS_CFLAGS@
XMLSEC_GNUTLS_LIBS = @XMLSEC_GNUTLS_LIBS@
XMLSEC_LIBDIR = @XMLSEC_LIBDIR@
XMLSEC_LIBS = @XMLSEC_LIBS@
XMLSEC_NO_AES = @XMLSEC_NO_AES@
XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_CRYPTO_DYNAMIC_LOADING = @XMLSEC_NO_CRYPTO_DYNAMIC_LOADING@
XMLSEC_NO_DES = @XMLSEC_NO_DES@
XMLSEC_NO_DSA = @XMLSEC_NO_DSA@
XMLSEC_NO_GCRYPT = @XMLSEC_NO_GCRYPT@
XMLSEC_NO_GNUTLS = @XMLSEC_NO_GNUTLS@
XMLSEC_NO_GOST = @XMLSEC_NO_GOST@
XMLSEC_NO_GOST2012 = @XMLSEC_NO_GOST2012@
XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
XMLSEC_NO_MSCRYPTO = @XMLSEC_NO_MSCRYPTO@
XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
XMLSEC_NO_OPENSSL = @XMLSEC_NO_OPENSSL@
XMLSEC_NO_RIPEMD160 = @XMLSEC_NO_RIPEMD160@
XMLSEC_NO_RSA = @XMLSEC_NO_RSA@
XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
XMLSEC_NO_X509 = @XMLSEC_NO_X509@
XMLSEC_NO_XMLDSIG = @XMLSEC_NO_XMLDSIG@
XMLSEC_NO_XMLENC = @XMLSEC_NO_XMLENC@
XMLSEC_NSS_CFLAGS = @XMLSEC_NSS_CFLAGS@
XMLSEC_NSS_LIBS = @XMLSEC_NSS_LIBS@
XMLSEC_OPENSSL_CFLAGS = @XMLSEC_OPENSSL_CFLAGS@
XMLSEC_OPENSSL_LIBS = @XMLSEC_OPENSSL_LIBS@
XMLSEC_PACKAGE = @XMLSEC_PACKAGE@
XMLSEC_STATIC_BINARIES = @XMLSEC_STATIC_BINARIES@
XMLSEC_VERSION = @XMLSEC_VERSION@
XMLSEC_VERSION_INFO = @XMLSEC_VERSION_INFO@
XMLSEC_VERSION_MAJOR = @XMLSEC_VERSION_MAJOR@
XMLSEC_VERSION_MINOR = @XMLSEC_VERSION_MINOR@
XMLSEC_VERSION_SAFE = @XMLSEC_VERSION_SAFE@
XMLSEC_VERSION_SUBMINOR = @XMLSEC_VERSION_SUBMINOR@
XSLTPROC = @XSLTPROC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#
#
#
NULL =
MODULE = xmlsec
SOURCE_DIR = $(top_srcdir)/src
SOURCE_DIR2 = $(top_builddir)/src
INCLUDE_DIR = $(top_srcdir)/include
INCLUDE_DIR2 = $(top_builddir)/include
SCAN_DIR = $(builddir)
SGML_DIR = $(builddir)/sgml.tmp
XML_DIR = $(builddir)/xml.tmp
EXAMPLES_DIR = $(SGML_DIR)/examples
SOURCE_CODE_DIR = $(builddir)/code
# We need to copy some files to make gkdoc happy that
# everything is in one folder
TMPL_DIR = $(builddir)/tmpl
TMPL_SRC_DIR = $(srcdir)/tmpl
MAIN_SGML_FILE = $(SGML_DIR)/xmlsec-main.sgml
MAIN_SGML_SRC_FILE = $(srcdir)/src/xmlsec.sgml
SGML_CHAPTERS_DIR = $(SGML_DIR)/chapters
SGML_CHAPTERS_SRC_DIR = $(srcdir)/src/chapters
EXTRA_DIST = \
$(TMPL_DIR) \
$(srcdir)/src \
$(srcdir)/images \
$(NULL)
SOURCE_FILES_TO_COPY = \
$(srcdir)/src \
$(srcdir)/images \
$(srcdir)/*.html \
$(srcdir)/*.png \
$(NULL)
#
# We need to pre-process original source files
# because gtkdoc does not understand some C features
#
SOURCE_CODE_FILES = \
$(shell find $(SOURCE_DIR) -name '*.c' -print ) \
$(shell find $(SOURCE_DIR2) -name '*.c' -print ) \
$(shell find $(INCLUDE_DIR) -name '*.h' -a ! -name "symbols.h" -print ) \
$(shell find $(INCLUDE_DIR2) -name '*.h' -a ! -name "symbols.h" -print )
EXAMPLES_SOURCE_DIR = $(top_srcdir)/examples
EXAMPLES_SOURCE_FILES = \
$(shell find $(EXAMPLES_SOURCE_DIR) -name '*.c' -print) \
$(shell find $(EXAMPLES_SOURCE_DIR) -name '*.xml' -print)
#
# This script removes gtkdoc crap from final html
#
REMOVE_GTKDOCLINK = $(top_srcdir)/scripts/remove-gtkdoclink.pl
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/api/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu docs/api/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local
dvi: dvi-am
dvi-am:
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic \
maintainer-clean-local
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
clean-local cscopelist-am ctags-am dist-hook distclean \
distclean-generic distclean-libtool distclean-local distdir \
dvi dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic maintainer-clean-local mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
.PRECIOUS: Makefile
# docs is legacy
all: docs
# if build API docs, then we also have xsltproc
@BUILD_API_DOCS_TRUE@docs: html-cleanup
@BUILD_API_DOCS_FALSE@docs:
@BUILD_API_DOCS_FALSE@ @( \
@BUILD_API_DOCS_FALSE@ echo "Copying api-docs..."; \
@BUILD_API_DOCS_FALSE@ if [ z"$(srcdir)" != z"$(builddir)" ]; \
@BUILD_API_DOCS_FALSE@ then \
@BUILD_API_DOCS_FALSE@ $(CP) -ru $(SOURCE_FILES_TO_COPY) $(builddir)/ ; \
@BUILD_API_DOCS_FALSE@ fi \
@BUILD_API_DOCS_FALSE@ )
html-cleanup: html
( echo "Cleaning up result files"; \
$(PERL) $(REMOVE_GTKDOCLINK) `find . -name "*.html" -print` \
)
# need to cleanup "bad" chars
html: sgml $(MAIN_SGML_FILE) $(SGML_CHAPTERS_DIR) xmlsec-index
$(GTKDOC_MKHTML) xmlsec $(MAIN_SGML_FILE)
$(SGML_CHAPTERS_DIR): $(SGML_CHAPTERS_SRC_DIR) $(SGML_CHAPTERS_DIR)/.sentinel
$(CP) -ru $(SGML_CHAPTERS_SRC_DIR)/* $(SGML_CHAPTERS_DIR)
$(MAIN_SGML_FILE): $(MAIN_SGML_SRC_FILE)
$(CP) -u $(MAIN_SGML_SRC_FILE) $(MAIN_SGML_FILE)
#
# Prepeare sgml files from sources for each library. We are also
# doing some "magic" here by automatically adding links to XML DSig and
# XML Enc specification, we also remove "Ptr" from the end of the link
# targets to make more references.
#
# We also fix a bunch of stupid errors from gtkdoc
#
sgml: sgml-base
(for i in `find $(SGML_DIR) -name "*.sgml" -print` ; do \
echo "Fixing up '$$i'" ; \
cat $$i | \
sed 's!\(<dsig:\)\([^/]*\)\(\/>\)!\&lt;dsig:\2\/\&gt;!g' | \
sed 's!\(<enc:\)\([^/]*\)\(\/>\)!\&lt;enc:\2\/\&gt;!g' | \
sed 's!\(<dsig:\)\(\w*\)\(>\)!\&lt;dsig:\2\/\&gt;!g' | \
sed 's!\(<enc:\)\(\w*\)\(>\)!\&lt;enc:\2\/\&gt;!g' | \
sed 's!\(&lt;dsig:\)\([^/]*\)\(\/&gt;\)!<ulink URL=\"http://www.w3.org/TR/xmldsig-core/#sec-\2\">\1\2\3</ulink>!g' | \
sed 's!\(&lt;enc:\)\([^/]*\)\(\/&gt;\)!<ulink URL=\"http://www.w3.org/TR/xmlenc-core/#sec-\2\">\1\2\3</ulink>!g' | \
sed 's!<para \/>!<para></para>!g' | \
sed 's!linkend=\"\(.*\)Ptr\"!linkend=\"\1\"!g' | \
sed 's!<colspec [^/]*\/>!!g' | \
sed 's!<programlisting language="C"!<programlisting!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!<\/title><\/refsect1>\n!<\/title><para><\/para><\/refsect1>!g' | \
$(PERL) -pe 's!para>\n!para>!g' > \
$$i.tmp; \
mv -f $$i.tmp $$i; \
done);
sgml-base: templates $(SGML_DIR)/.sentinel
$(GTKDOC_MKDB) --module=xmlsec \
--main-sgml-file=$(SGML_DIR)/xmlsec-base.sgml \
--output-dir=$(SGML_DIR)/ \
--tmpl-dir=$(TMPL_DIR)/base \
--source-dir=$(SOURCE_CODE_DIR)/src/base \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
$(GTKDOC_MKDB) --module=xmlsec-openssl \
--main-sgml-file=$(SGML_DIR)/xmlsec-openssl.sgml \
--tmpl-dir=$(TMPL_DIR)/openssl \
--output-dir=$(SGML_DIR)/openssl \
--source-dir=$(SOURCE_CODE_DIR)/src/openssl \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
$(GTKDOC_MKDB) --module=xmlsec-gnutls \
--main-sgml-file=$(SGML_DIR)/xmlsec-gnutls.sgml \
--tmpl-dir=$(TMPL_DIR)/gnutls \
--output-dir=$(SGML_DIR)/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
$(GTKDOC_MKDB) --module=xmlsec-gcrypt \
--main-sgml-file=$(SGML_DIR)/xmlsec-gcrypt.sgml \
--tmpl-dir=$(TMPL_DIR)/gcrypt \
--output-dir=$(SGML_DIR)/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
$(GTKDOC_MKDB) --module=xmlsec-nss \
--main-sgml-file=$(SGML_DIR)/xmlsec-nss.sgml \
--tmpl-dir=$(TMPL_DIR)/nss \
--output-dir=$(SGML_DIR)/nss \
--source-dir=$(SOURCE_CODE_DIR)/src/nss \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
$(GTKDOC_MKDB) --module=xmlsec-mscrypto \
--main-sgml-file=$(SGML_DIR)/xmlsec-mscrypto.sgml \
--tmpl-dir=$(TMPL_DIR)/mscrypto \
--output-dir=$(SGML_DIR)/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
templates: scan templates-copy
$(GTKDOC_MKTMPL) --module=xmlsec \
--output-dir=$(TMPL_DIR)/base
$(GTKDOC_MKTMPL) --module=xmlsec-openssl \
--output-dir=$(TMPL_DIR)/openssl
$(GTKDOC_MKTMPL) --module=xmlsec-gnutls \
--output-dir=$(TMPL_DIR)/gnutls
$(GTKDOC_MKTMPL) --module=xmlsec-gcrypt \
--output-dir=$(TMPL_DIR)/gcrypt
$(GTKDOC_MKTMPL) --module=xmlsec-nss \
--output-dir=$(TMPL_DIR)/nss
$(GTKDOC_MKTMPL) --module=xmlsec-mscrypto \
--output-dir=$(TMPL_DIR)/mscrypto
# make sure to run chmod since we will update templates
templates-copy: $(TMPL_SRC_DIR) $(TMPL_DIR)/.sentinel
@echo "Copying original template files into '$(TMPL_DIR)' ..."
( if [ z"$(TMPL_DIR)" != z"$(TMPL_SRC_DIR)" ] ; then \
$(CP) -ru $(TMPL_SRC_DIR)/* $(TMPL_DIR)/ ; \
fi ; )
chmod -R u+w $(TMPL_DIR)
scan: SOURCE_CODEs example_sources
$(GTKDOC_SCAN) --module=xmlsec \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/base \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
$(GTKDOC_SCAN) --module=xmlsec-openssl \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/openssl \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
$(GTKDOC_SCAN) --module=xmlsec-gnutls \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
$(GTKDOC_SCAN) --module=xmlsec-gcrypt \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
$(GTKDOC_SCAN) --module=xmlsec-nss \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/nss \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
$(GTKDOC_SCAN) --module=xmlsec-mscrypto \
--rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
--source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
#
# Prepare source files by coping them to "code" folder and
# removing XMLSEC_EXPORT_* stuff that makes gtkdoc crazy
#
SOURCE_CODEs: $(SOURCE_CODE_FILES) $(SOURCE_CODE_DIR)/.sentinel SOURCE_CODEs_cleanup
@echo "Preprocessing source files into '$(SOURCE_CODE_DIR)' ..."
@mkdir -p $(SOURCE_CODE_DIR)/src/base $(SOURCE_CODE_DIR)/include/xmlsec/base
@( \
for i in $(SOURCE_CODE_FILES) ; do \
folder_name=`echo "$$i" | \
sed 's#$(top_srcdir)/##' | \
sed 's#$(top_builddir)/##' | \
sed 's#/[^/]*$$##'`; \
file_name=`echo "$$i" | \
sed 's#.*/##'`; \
mkdir -p "$(SOURCE_CODE_DIR)/$$folder_name"; \
cat "$$i" | \
sed 's/#if.*//' | \
sed 's/#el.*//' | \
sed 's/#end.*//' | \
sed 's/XMLSEC_CRYPTO_EXPORT//' | \
sed 's/XMLSEC_EXPORT_VAR//' | \
sed 's/XMLSEC_EXPORT//' | \
sed 's/XMLSEC_ERRORS_PRINTF_ATTRIBUTE//' > \
$(SOURCE_CODE_DIR)/$$folder_name/$$file_name; \
done);
-@mv -f $(SOURCE_CODE_DIR)/src/*.c $(SOURCE_CODE_DIR)/src/base
-@mv -f $(SOURCE_CODE_DIR)/include/xmlsec/*.h $(SOURCE_CODE_DIR)/include/xmlsec/base
-@rm -f $(SOURCE_CODE_DIR)/include/xmlsec/*/symbols.h
SOURCE_CODEs_cleanup: $(SOURCE_CODE_DIR)/.sentinel
@rm -rf $(SOURCE_CODE_DIR)/*
#
# Create index for all functions. For macros and defines need to add -CAPS suffix
#
xmlsec-index: scan $(SGML_DIR)/.sentinel
@grep -h '<NAME>.*</NAME>' $(SCAN_DIR)/xmlsec-*decl.txt | \
grep -v '<NAME>extern</NAME>' | \
sort -u | \
sed 's#_#-#g' | \
sed 's#<NAME>\([^-]*\)-\([^<]*\)</NAME>#<listitem><para><link linkend=\"\1-\2-CAPS\">\1-\2</link></para></listitem>#g' | \
sed 's#<NAME>\([^<]*\)</NAME>#<listitem><para><link linkend=\"\1\">\1</link></para></listitem>#g' > \
$(SGML_DIR)/xmlsec-index.sgml
#
# The following code converts C example file to sgml RefEntry files.
# We get file title from a string "XML Security Library example: ..."
# which is usually placed at the top of the file. Also all "unsafe" xml
# characters (<, >, &) are escaped.
#
example_sources: $(EXAMPLES_DIR)/.sentinel
@echo "Preprocessing example source files into '$(EXAMPLES_DIR)' ..."
@rm -rf $(EXAMPLES_DIR)/*
@(for i in $(EXAMPLES_SOURCE_FILES) ; do \
file_name=`echo $$i | sed 's#.*/##' | sed 's#\..*$$##'`; \
file_ext=`echo $$i | sed 's#.*/##' | sed 's#.*\.##'`; \
echo Converting $$file_name.$$file_ext to $$file_name.sgml ...; \
file_title=`cat $$i | grep 'XML Security Library example: ' | sed 's#^.*: *##'`; \
echo "<sect2 id=\"xmlsec-example-$$file_name\" >" > \
$(EXAMPLES_DIR)/$$file_name.sgml; \
echo "<title>$$file_name.$$file_ext</title><para><informalexample><programlisting>" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
cat $$i | \
sed "s#&#\&amp;#g" | \
sed "s#<#\&lt;#g" | \
sed "s#>#\&gt;#g" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
echo "</programlisting></informalexample></para></sect2>" >> \
$(EXAMPLES_DIR)/$$file_name.sgml; \
done);
# A single pattern rule will create all appropriate folders as required
# otherwise make (annoyingly) deletes it
.PRECIOUS: %/.sentinel
%/.sentinel:
@echo "Creating folder '${@D}' ..."
mkdir -p ${@D}
touch $@
dist-hook:
@cp -p $(srcdir)/*.html $(srcdir)/*.png $(distdir)/
(for i in `find $(distdir) -name ".sentinel" -print` ; do \
echo "Removing some files '$$i' before dist ... " ; \
rm $$i ; \
done )
(for i in `find $(distdir) -name "*.sgml.bak" -print` ; do \
echo "Removing some files '$$i' before dist ... " ; \
rm "$$i" ; \
done ; )
clean-local:
-rm -rf $(SOURCE_CODE_DIR) $(EXAMPLES_DIR) $(SCAN_DIR)/*.txt $(SGML_DIR) $(XML_DIR)
-rm -f *.stamp *.types *.css index.sgml
( if [ z"$(TMPL_SRC_DIR)" != z"$(TMPL_DIR)" ] && [ -d "$(TMPL_DIR)" ] ; then \
chmod -R u+w $(TMPL_DIR) && rm -rf $(TMPL_DIR) ; \
fi ; )
( if [ z"$(builddir)" != z"$(srcdir)" ] ; then \
chmod -R u+w $(builddir)/src && rm -rf $(builddir)/src ; \
chmod -R u+w $(builddir)/images && rm -rf $(builddir)/images ; \
chmod -R u+w $(builddir)/*.png && rm -rf $(builddir)/*.png ; \
fi ; )
distclean-local: clean-local
maintainer-clean-local: clean-local
-rm -f *.html
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -1,330 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>XML Security Library Reference Manual</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<link rel="NEXT" title="XML Security Library Tutorial" href="xmlsec-notes.html">
<style type="text/css">.synopsis, .classsynopsis {
background: #eeeeee;
border: solid 1px #aaaaaa;
padding: 0.5em;
}
.programlisting {
background: #eeeeff;
border: solid 1px #aaaaff;
padding: 0.5em;
}
.variablelist {
padding: 4px;
margin-left: 3em;
}
.navigation {
background: #ffeeee;
border: solid 1px #ffaaaa;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.navigation a {
color: #770000;
}
.navigation a:visited {
color: #550000;
}
.navigation .title {
font-size: 200%;
}</style>
<style type="text/css">
table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
width: 20em;
}
.synopsis, .classsynopsis {
background: #eeeeee;
border: solid 1px #aaaaaa;
}
.programlisting {
background: #eeeeee;
border: solid 1px #000000;
}
.navigation {
background: #eeeeee;
border: solid 1px #000000;
}
.navigation a {
color: initial;
}
.navigation a:visited {
color: initial;
}
</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
<ul>
<li><a href="../index.html">Home</a></li>
<li><a href="../download.html">Download</a></li>
<li><a href="../news.html">News</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul>
<li><a href="../faq.html">FAQ</a></li>
<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
<li><a href="../api/xmlsec-reference.html">API reference</a></li>
<li><a href="../api/xmlsec-examples.html">Examples</a></li>
</ul>
<li><a href="../xmldsig.html">XML Digital Signature</a></li>
<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
<li><a href="../xmlenc.html">XML Encryption</a></li>
<li><a href="../c14n.html">XML Canonicalization</a></li>
<li><a href="../bugs.html">Reporting Bugs</a></li>
<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
<li><a href="../related.html">Related</a></li>
<li><a href="../authors.html">Authors</a></li>
</ul>
<table width="100%">
<tr>
<td width="15"></td>
<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
</tr>
<tr>
<td width="15"></td>
<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
</tr>
<tr>
<td width="15"></td>
<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
</tr>
<!--Links - start--><!--Links - end-->
</table>
</td>
<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
<div class="BOOK">
<div class="TITLEPAGE">
<table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th align="center" valign="MIDDLE"><p class="TITLE">XML Security Library Reference Manual<a name="AEN2"></a></p></th></tr></table>
<h3 class="AUTHOR">
<a name="AEN5"></a>Aleksey Sanin</h3>
<div class="AFFILIATION"><div class="ADDRESS"><p class="ADDRESS"> <code class="EMAIL">&lt;<a href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a>&gt;</code><br>
</p></div></div>
<p class="COPYRIGHT">Copyright <20> 2002-2003 Aleksey Sanin</p>
<div><div class="ABSTRACT">
<p></p>
<a name="AEN18"></a><p>This manual documents the interfaces of the xmlsec
library and has some short notes to help get you up to speed
with using the library.</p>
<p></p>
</div></div>
<div class="LEGALNOTICE">
<p></p>
<a name="AEN14"></a><p>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
permission notice are preserved on all copies.</p>
<p>Permission is granted to copy and distribute modified
versions of this manual under the conditions for verbatim
copying, provided also that the entire resulting derived work is
distributed under the terms of a permission notice identical to
this one.</p>
<p>Permission is granted to copy and distribute translations
of this manual into another language, under the above conditions
for modified versions.</p>
<p></p>
</div>
</div>
<div class="TOC"><dl>
<dt><b>Table of Contents</b></dt>
<dt>I. <a href="xmlsec-notes.html">XML Security Library Tutorial</a>
</dt>
<dd><dl>
<dt><a href="xmlsec-notes-overview.html">Overview.</a></dt>
<dt><a href="xmlsec-notes-structure.html">XML Security Library Structure.</a></dt>
<dt><a href="xmlsec-notes-compiling.html">Building the application with XML Security Library.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-compiling.html#XMLSEC-NOTES-COMPILING-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-include-files.html">Include files.</a></dt>
<dt><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></dt>
<dt><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></dt>
<dt><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-init-shutdown.html">Initialization and shutdown.</a></dt>
<dt><a href="xmlsec-notes-sign-encrypt.html">Signing and encrypting documents.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-sign-encrypt.html#XMLSEC-NOTES-SIGN-ENCRYPT-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-sign.html">Signing a document.</a></dt>
<dt><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-templates.html">Creating dynamic templates.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-templates.html#XMLSEC-NOTES-TEMPLATES-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></dt>
<dt><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-verify-decrypt.html">Verifing and decrypting documents.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-verify-decrypt.html#XMLSEC-NOTES-VERIFY-DECRYPT-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-verify.html">Verifying a signed document</a></dt>
<dt><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-keys.html">Keys.</a></dt>
<dt><a href="xmlsec-notes-keysmngr.html">Keys manager.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-keysmngr.html#XMLSEC-NOTES-KEYSMNGR-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></dt>
<dt><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></dt>
<dt><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></dt>
<dt><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-x509.html">Using X509 Certificates.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-x509.html#XMLSEC-NOTES-X509-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></dt>
<dt><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></dt>
</dl></dd>
<dt><a href="xmlsec-notes-transforms.html">Transforms and transforms chain.</a></dt>
<dt><a href="xmlsec-notes-contexts.html">Using context objects.</a></dt>
<dt><a href="xmlsec-notes-new-crypto.html">Adding support for new cryptographic library.</a></dt>
<dd><dl>
<dt><a href="xmlsec-notes-new-crypto.html#XMLSEC-NOTES-NEW-CRYPTO-OVERVIEW">Overview.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></dt>
<dt><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></dt>
</dl></dd>
<dt><a href="xmlsec-examples.html">Examples.</a></dt>
<dd><dl>
<dt><a href="xmlsec-examples.html#XMLSEC-EXAMPLES-OVERVIEW">XML Security Library Examples.</a></dt>
<dt><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></dt>
<dt><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></dt>
<dt><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></dt>
<dt><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></dt>
<dt><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></dt>
<dt><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></dt>
<dt><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></dt>
<dt><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></dt>
<dt><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></dt>
<dt><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></dt>
<dt><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></dt>
<dt><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></dt>
<dt><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></dt>
</dl></dd>
<dt><a href="xmlsec-signature-klasses.html">APPENDIX A. XML Security Library Signature Klasses.</a></dt>
<dt><a href="xmlsec-encryption-klasses.html">APPENDIX B. XML Security Library Encryption Klasses.</a></dt>
</dl></dd>
<dt>II. <a href="xmlsec-reference.html">XML Security Library API Reference.</a>
</dt>
<dd><dl>
<dt><a href="xmlsec-ref.html">XML Security Core Library API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-app.html">app</a> -- Crypto-engine independent application support function.</dt>
<dt>
<a href="xmlsec-base64.html">base64</a> -- Base64 encoding/decoding functions.</dt>
<dt>
<a href="xmlsec-bn.html">bn</a> -- Big numbers support functions.</dt>
<dt>
<a href="xmlsec-buffer.html">buffer</a> -- Binary buffer implementation.</dt>
<dt>
<a href="xmlsec-dl.html">dl</a> -- Dynamic crypto-engine library loading support.</dt>
<dt>
<a href="xmlsec-errors.html">errors</a> -- Error/log messages support.</dt>
<dt>
<a href="xmlsec-io.html">io</a> -- Input/output support.</dt>
<dt>
<a href="xmlsec-keyinfo.html">keyinfo</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser.</dt>
<dt>
<a href="xmlsec-keysdata.html">keysdata</a> -- Crypto key data object definition.</dt>
<dt>
<a href="xmlsec-keys.html">keys</a> -- Crypto key object definition.</dt>
<dt>
<a href="xmlsec-keysmngr.html">keysmngr</a> -- Keys manager object support.</dt>
<dt>
<a href="xmlsec-list.html">list</a> -- Generic list structure implementation.</dt>
<dt>
<a href="xmlsec-membuf.html">membuf</a> -- Memory buffer transform implementation.</dt>
<dt>
<a href="xmlsec-nodeset.html">nodeset</a> -- Nodeset object implementation.</dt>
<dt>
<a href="xmlsec-parser.html">parser</a> -- Parser transform implementation.</dt>
<dt>
<a href="xmlsec-templates.html">templates</a> -- Dynamic templates creation functions.</dt>
<dt>
<a href="xmlsec-transforms.html">transforms</a> -- Transform object definition.</dt>
<dt>
<a href="xmlsec-version.html">version</a> -- Version macros.</dt>
<dt>
<a href="xmlsec-xmldsig.html">xmldsig</a> -- XML Digital Signature support.</dt>
<dt>
<a href="xmlsec-xmlenc.html">xmlenc</a> -- XML Encryption support.</dt>
<dt>
<a href="xmlsec-xmlsec.html">xmlsec</a> -- Utility functions.</dt>
<dt>
<a href="xmlsec-xmltree.html">xmltree</a> -- XML tree operations.</dt>
<dt>
<a href="xmlsec-x509.html">x509</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser.</dt>
</dl></dd>
<dt><a href="xmlsec-openssl-ref.html">XML Security Library for OpenSLL API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-openssl-app.html">app</a> -- Application functions implementation for OpenSSL.</dt>
<dt>
<a href="xmlsec-openssl-bn.html">bn</a> -- Big numbers helper functions.</dt>
<dt>
<a href="xmlsec-openssl-crypto.html">crypto</a> -- Crypto transforms implementation for OpenSSL.</dt>
<dt>
<a href="xmlsec-openssl-evp.html">evp</a> -- EVP keys data implementation.</dt>
<dt>
<a href="xmlsec-openssl-x509.html">x509</a> -- X509 certificates support implementation for OpenSSL.</dt>
</dl></dd>
<dt><a href="xmlsec-gnutls-ref.html">XML Security Library for GnuTLS API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-gnutls-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
<dt>
<a href="xmlsec-gnutls-crypto.html">crypto</a> -- Crypto transforms implementation for GnuTLS.</dt>
</dl></dd>
<dt><a href="xmlsec-gcrypt-ref.html">XML Security Library for GCrypt API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-gcrypt-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
<dt>
<a href="xmlsec-gcrypt-crypto.html">crypto</a> -- Crypto transforms implementation for GCrypt.</dt>
</dl></dd>
<dt><a href="xmlsec-nss-ref.html">XML Security Library for NSS API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-nss-app.html">app</a> -- Application functions implementation for NSS.</dt>
<dt>
<a href="xmlsec-nss-bignum.html">bignum</a> -- Big numbers helper functions.</dt>
<dt>
<a href="xmlsec-nss-crypto.html">crypto</a> -- Crypto transforms implementation for NSS.</dt>
<dt>
<a href="xmlsec-nss-keysstore.html">keysstore</a> -- Keys store implementation for NSS.</dt>
<dt>
<a href="xmlsec-nss-pkikeys.html">pkikeys</a> -- PKI keys data implementation.</dt>
<dt>
<a href="xmlsec-nss-x509.html">x509</a> -- X509 certificates support implementation for NSS.</dt>
</dl></dd>
<dt><a href="xmlsec-mscrypto-ref.html">XML Security Library for MSCrypto API Reference.</a></dt>
<dd><dl>
<dt>
<a href="xmlsec-mscrypto-app.html">app</a> -- Application functions implementation for MS Crypto.</dt>
<dt>
<a href="xmlsec-mscrypto-certkeys.html">certkeys</a> -- MS Crypto certificates helper functions.</dt>
<dt>
<a href="xmlsec-mscrypto-crypto.html">crypto</a> -- Crypto transforms implementation for MS Crypto.</dt>
<dt>
<a href="xmlsec-mscrypto-keysstore.html">keysstore</a> -- Keys store implementation for MS Crypto.</dt>
<dt>
<a href="xmlsec-mscrypto-x509.html">x509</a> -- X509 certificates support implementation for MS Crypto.</dt>
</dl></dd>
<dt><a href="xmlsec-index.html">XML Security Library Reference Index</a></dt>
</dl></dd>
</dl></div>
</div>
<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
<td align="left"></td>
<td align="right"><a accesskey="n" href="xmlsec-notes.html"><b>XML Security Library Tutorial &gt;&gt;&gt;</b></a></td>
</tr></table>
</td></tr></table></td>
</tr></table></body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

View File

@ -1,252 +0,0 @@
<chapter id="xmlsec-notes-compiling">
<title>Building the application with XML Security Library.</title>
<sect1 id="xmlsec-notes-compiling-overview">
<title>Overview.</title>
<para>Compiling and linking application with XML Security
Library requires specifying correct compilation flags, library files
and paths to include and library files. As we discussed before,
XML Security Library consist of the core xmlsec library and several
xmlsec-crypto libraries. Application has a choice of selecting crypto
library at link time or dynamicaly loading it at run time. Please note,
that loading crypto engines dynamicaly may introduce security problems
on some platforms.
</para>
</sect1>
<sect1 id="xmlsec-notes-include-files" >
<title>Include files.</title>
<para>In order to use XML Security Library an application should include
one or more of the following files:
<itemizedlist>
<listitem>
<para><link linkend="XMLSEC-XMLSEC">xmlsec/xmlsec.h</link> -
XML Security Library initialization and shutdown functions;
</para>
</listitem>
<listitem>
<para><link linkend="XMLSEC-XMLDSIG">xmlsec/xmldsig.h</link> -
XML Digital Signature functions;</para>
</listitem>
<listitem>
<para><link linkend="XMLSEC-XMLENC">xmlsec/xmlenc.h</link> -
XML Encryption functions;</para>
</listitem>
<listitem>
<para><link linkend="XMLSEC-XMLTREE">xmlsec/xmltree.h</link> -
helper functions for XML documents manipulation;
</para>
</listitem>
<listitem>
<para><link linkend="XMLSEC-TEMPLATES">xmlsec/templates.h</link> -
helper functions for dynamic XML Digital Signature and
XML Encryption templates creation;
</para>
</listitem>
<listitem>
<para><link linkend="XMLSEC-CRYPTO">xmlsec/crypto.h</link> -
automatic XML Security Crypto Library selection.
</para>
</listitem>
</itemizedlist>
</para>
<para>If necessary, the application should also include LibXML,
LibXSLT and crypto library header files.
</para>
<para>
<example>
<title>Example includes file section.</title>
<programlisting><![CDATA[
#include <libxml/tree.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#ifndef XMLSEC_NO_XSLT
#include <libxslt/xslt.h>
#endif /* XMLSEC_NO_XSLT */
#include <xmlsec/xmlsec.h>
#include <xmlsec/xmltree.h>
#include <xmlsec/xmldsig.h>
#include <xmlsec/xmlenc.h>
#include <xmlsec/templates.h>
#include <xmlsec/crypto.h>
]]></programlisting>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-compiling-unix" >
<title>Compiling and linking on Unix.</title>
<para>There are several ways to get necessary compilation
and linking information on Unix and application can use
any of these methods to do crypto engine selection either
at linking or run time.
<itemizedlist>
<listitem><para>PKG_CHECK_MODULES() macro
<example>
<title>Using PKG_CHECK_MODULES() macro in a configure.in file
to select crypto engine (openssl) at linking time.</title>
<programlisting><![CDATA[
dnl
dnl Check for xmlsec and friends
dnl
PKG_CHECK_MODULES(XMLSEC, xmlsec1-openssl >= 1.0.0 xml2 libxslt,,exit)
CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
LDFLAGS="$LDFLAGS $XMLSEC_LIBS"
]]></programlisting>
</example>
<example>
<title>Using PKG_CHECK_MODULES() macro in a configure.in file
to enable dynamical loading of xmlsec-crypto library.</title>
<programlisting><![CDATA[
dnl
dnl Check for xmlsec and friends
dnl
PKG_CHECK_MODULES(XMLSEC, xmlsec1 >= 1.0.0 xml2 libxslt,,exit)
CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
LDFLAGS="$LDFLAGS $XMLSEC_LIBS"
]]></programlisting>
</example>
</para></listitem>
<listitem><para>pkg-config script
<example>
<title>Using pkg-config script in a Makefile
to select crypto engine (nss) at linking time.</title>
<programlisting><![CDATA[
PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell pkg-config --cflags xmlsec1-nss)
LDFLAGS += -g
LIBS += $(shell pkg-config --libs xmlsec1-nss)
all: $(PROGRAM)
%: %.c
$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)
clean:
@rm -rf $(PROGRAM)
]]></programlisting>
</example>
<example>
<title>Using pkg-config script in a Makefile
to enable dynamical loading of xmlsec-crypto library.</title>
<programlisting><![CDATA[
PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell pkg-config --cflags xmlsec1)
LDFLAGS += -g
LIBS += $(shell pkg-config --libs xmlsec1)
all: $(PROGRAM)
%: %.c
$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)
clean:
@rm -rf $(PROGRAM)
]]></programlisting>
</example>
</para></listitem>
<listitem><para>xmlsec1-config script
<example>
<title>Using xmlsec1-config script in a Makefile
to select crypto engine (e.g. gnutls) at linking time.</title>
<programlisting><![CDATA[
PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell xmlsec1-config --crypto gnutls --cflags)
LDFLAGS += -g
LIBS += $(shell xmlsec1-config --crypto gnutls --libs)
all: $(PROGRAM)
%: %.c
$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)
clean:
@rm -rf $(PROGRAM)
]]></programlisting>
</example>
<example>
<title>Using xmlsec1-config script in a Makefile
to enable dynamical loading of xmlsec-crypto library.</title>
<programlisting><![CDATA[
PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell xmlsec1-config --cflags)
LDFLAGS += -g
LIBS += $(shell xmlsec1-config --libs)
all: $(PROGRAM)
%: %.c
$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)
clean:
@rm -rf $(PROGRAM)
]]></programlisting>
</example>
</para></listitem>
</itemizedlist>
</para>
</sect1>
<sect1 id="xmlsec-notes-compiling-windows" >
<title>Compiling and linking on Windows.</title>
<para>On Windows there is no such simple and elegant solution.
Please check <filename>README</filename> file in <filename>win32</filename>
folder of the library package for latest instructions.
However, there are few general things, that you need to remember:
<itemizedlist>
<listitem><para>
<emphasis>All libraries linked to your application must be compiled
with the same Microsoft Runtime Libraries.</emphasis>
</para></listitem>
<listitem><para>
<emphasis>Static linking with XML Security Library requires
additional global defines:</emphasis>
<informalexample><programlisting>
#define LIBXML_STATIC
#define LIBXSLT_STATIC
#define XMLSEC_STATIC
</programlisting></informalexample>
</para></listitem>
<listitem><para>
If you do not want to dynamicaly load xmlsec-crypto library
and prefer to select crypto engine at linking then you should
link your application with xmlsec and at least one of
xmlsec-crypto libraries.
</para></listitem>
<listitem><para>
In order to enable dynamic loading for xmlsec-crypto library
you should add additional global define:
<informalexample><programlisting>
#define XMLSEC_CRYPTO_DYNAMIC_LOADING
</programlisting></informalexample>
</para></listitem>
</itemizedlist>
</para>
</sect1>
<sect1 id="xmlsec-notes-compiling-others">
<title>Compiling and linking on other systems.</title>
<para>Well, nothing is impossible, it's only software (you managed to
compile the library itself, do you?).
I'll be happy to include in this manual your expirience with
compiling and linking applications with XML Security Library
on other platforms (if you would like to share it).
</para>
</sect1>
</chapter>

View File

@ -1,325 +0,0 @@
<chapter id="xmlsec-notes-templates">
<title>Creating dynamic templates.</title>
<sect1 id="xmlsec-notes-templates-overview">
<title>Overview.</title>
<para>The XML Security Library uses templates to describe
how and what data should be signed or encrypted. The template
is a regular XML file. You can create templates in advance
using your favorite XML files editor, load them from a file
and use for creating signature or encrypting data. You can
also create templates dynamicaly. The XML Security Library
provides helper functions to quickly create dynamic templates
inside your application.</para>
</sect1>
<sect1 id="xmlsec-notes-dynamic-signature-templates">
<title>Creating dynamic signature templates.</title>
<para>The signature template has structure similar
to the XML Digital Signature structure as it is described in
<ulink URL="http://www.w3.org/TR/xmldsig-core">specification</ulink>.
The only difference is that some nodes (for example,
&lt;dsig:DigestValue/&gt; or &lt;SignatureValue/&gt;)
are empty. The XML Security Library sets the content of these
nodes after doing necessary calculations.
</para>
<figure>
<title>XML Digital Signature structure</title>
<programlisting>
&lt;dsig:Signature ID?&gt;
&lt;dsig:SignedInfo&gt;
&lt;dsig:CanonicalizationMethod Algorithm /&gt;
&lt;dsig:SignatureMethod Algorithm /&gt;
(&lt;dsig:Reference URI? &gt;
(&lt;dsig:Transforms&gt;
(&lt;dsig:Transform Algorithm /&gt;)+
&lt;/dsig:Transforms&gt;)?
&lt;dsig:DigestMethod Algorithm &gt;
&lt;dsig:DigestValue&gt;
&lt;/dsig:Reference&gt;)+
&lt;/dsig:SignedInfo&gt;
&lt;dsig:SignatureValue&gt;
(&lt;dsig:KeyInfo&gt;
&lt;dsig:KeyName&gt;?
&lt;dsig:KeyValue&gt;?
&lt;dsig:RetrievalMethod&gt;?
&lt;dsig:X509Data&gt;?
&lt;dsig:PGPData&gt;?
&lt;enc:EncryptedKey&gt;?
&lt;enc:AgreementMethod&gt;?
&lt;dsig:KeyName&gt;?
&lt;dsig:RetrievalMethod&gt;?
&lt;*&gt;?
&lt;/dsig:KeyInfo&gt;)?
(&lt;dsig:Object ID?&gt;)*
&lt;/dsig:Signature&gt;
</programlisting>
</figure>
<para>
<example>
<title>Creating dynamic signature template.</title>
<programlisting><![CDATA[
/**
* sign_file:
* @xml_file: the XML file name.
* @key_file: the PEM private key file name.
*
* Signs the #xml_file using private key from #key_file and dynamicaly
* created enveloped signature template.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
sign_file(const char* xml_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr signNode = NULL;
xmlNodePtr refNode = NULL;
xmlNodePtr keyInfoNode = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
assert(xml_file);
assert(key_file);
/* load doc file */
doc = xmlParseFile(xml_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_file);
goto done;
}
/* create signature template for RSA-SHA1 enveloped signature */
signNode = xmlSecTmplSignatureCreate(doc, xmlSecTransformExclC14NId,
xmlSecTransformRsaSha1Id, NULL);
if(signNode == NULL) {
fprintf(stderr, "Error: failed to create signature template\n");
goto done;
}
/* add <dsig:Signature/> node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
refNode = xmlSecTmplSignatureAddReference(signNode, xmlSecTransformSha1Id,
NULL, NULL, NULL);
if(refNode == NULL) {
fprintf(stderr, "Error: failed to add reference to signature template\n");
goto done;
}
/* add enveloped transform */
if(xmlSecTmplReferenceAddTransform(refNode, xmlSecTransformEnvelopedId) == NULL) {
fprintf(stderr, "Error: failed to add enveloped transform to reference\n");
goto done;
}
/* add <dsig:KeyInfo/> and <dsig:KeyName/> nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
if(xmlSecTmplKeyInfoAddKeyName(keyInfoNode, NULL) == NULL) {
fprintf(stderr, "Error: failed to add key name\n");
goto done;
}
/* create signature context, we don't need keys manager in this example */
dsigCtx = xmlSecDSigCtxCreate(NULL);
if(dsigCtx == NULL) {
fprintf(stderr,"Error: failed to create signature context\n");
goto done;
}
/* load private key, assuming that there is not password */
dsigCtx->signKey = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(dsigCtx->signKey == NULL) {
fprintf(stderr,"Error: failed to load private pem key from \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(dsigCtx->signKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* sign the template */
if(xmlSecDSigCtxSign(dsigCtx, signNode) < 0) {
fprintf(stderr,"Error: signature failed\n");
goto done;
}
/* print signed document to stdout */
xmlDocDump(stdout, doc);
/* success */
res = 0;
done:
/* cleanup */
if(dsigCtx != NULL) {
xmlSecDSigCtxDestroy(dsigCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-sign2">Full program listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-dynamic-encryption-templates">
<title>Creating dynamic encryption templates.</title>
<para>The encryption template has structure similar
to the XML Encryption structure as it is described in
<ulink URL="http://www.w3.org/TR/xmlenc-core">specification</ulink>.
The only difference is that some nodes (for example,
&lt;enc:CipherValue/&gt;)
are empty. The XML Security Library sets the content of these
nodes after doing necessary calculations.
</para>
<figure>
<title>XML Encryption structure</title>
<programlisting>
&lt;enc:EncryptedData Id? Type? MimeType? Encoding?&gt;
&lt;enc:EncryptionMethod Algorithm /&gt;?
(&lt;dsig:KeyInfo&gt;
&lt;dsig:KeyName&gt;?
&lt;dsig:KeyValue&gt;?
&lt;dsig:RetrievalMethod&gt;?
&lt;dsig:X509Data&gt;?
&lt;dsig:PGPData&gt;?
&lt;enc:EncryptedKey&gt;?
&lt;enc:AgreementMethod&gt;?
&lt;dsig:KeyName&gt;?
&lt;dsig:RetrievalMethod&gt;?
&lt;*&gt;?
&lt;/dsig:KeyInfo&gt;)?
&lt;enc:CipherData&gt;
&lt;enc:CipherValue&gt;?
&lt;enc:CipherReference URI?&gt;?
&lt;/enc:CipherData&gt;
&lt;enc:EncryptionProperties&gt;?
&lt;/enc:EncryptedData&gt;
</programlisting>
</figure>
<para>
<example>
<title>Creating dynamic encrytion template.</title>
<programlisting><![CDATA[
/**
* encrypt_file:
* @xml_file: the encryption template file name.
* @key_file: the Triple DES key file.
*
* Encrypts #xml_file using a dynamicaly created template and DES key from
* #key_file.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
encrypt_file(const char* xml_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr encDataNode = NULL;
xmlNodePtr keyInfoNode = NULL;
xmlSecEncCtxPtr encCtx = NULL;
int res = -1;
assert(xml_file);
assert(key_file);
/* load template */
doc = xmlParseFile(xml_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_file);
goto done;
}
/* create encryption template to encrypt XML file and replace
* its content with encryption result */
encDataNode = xmlSecTmplEncDataCreate(doc, xmlSecTransformDes3CbcId,
NULL, xmlSecTypeEncElement, NULL, NULL);
if(encDataNode == NULL) {
fprintf(stderr, "Error: failed to create encryption template\n");
goto done;
}
/* we want to put encrypted data in the <enc:CipherValue/> node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
/* add <dsig:KeyInfo/> and <dsig:KeyName/> nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
if(xmlSecTmplKeyInfoAddKeyName(keyInfoNode, NULL) == NULL) {
fprintf(stderr, "Error: failed to add key name\n");
goto done;
}
/* create encryption context, we don't need keys manager in this example */
encCtx = xmlSecEncCtxCreate(NULL);
if(encCtx == NULL) {
fprintf(stderr,"Error: failed to create encryption context\n");
goto done;
}
/* load DES key, assuming that there is not password */
encCtx->encKey = xmlSecKeyReadBinaryFile(xmlSecKeyDataDesId, key_file);
if(encCtx->encKey == NULL) {
fprintf(stderr,"Error: failed to load des key from binary file \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(encCtx->encKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* encrypt the data */
if(xmlSecEncCtxXmlEncrypt(encCtx, encDataNode, xmlDocGetRootElement(doc)) < 0) {
fprintf(stderr,"Error: encryption failed\n");
goto done;
}
/* we template is inserted in the doc */
encDataNode = NULL;
/* print encrypted data with document to stdout */
xmlDocDump(stdout, doc);
/* success */
res = 0;
done:
/* cleanup */
if(encCtx != NULL) {
xmlSecEncCtxDestroy(encCtx);
}
if(encDataNode != NULL) {
xmlFreeNode(encDataNode);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-encrypt2">Full program listing</link></simpara>
</example>
</para>
</sect1>
</chapter>

View File

@ -1,102 +0,0 @@
<chapter id="xmlsec-examples">
<title>Examples.</title>
<sect1 id="xmlsec-examples-overview" >
<title>XML Security Library Examples.</title>
<para>This section contains several examples of using XML Security Library
to sign, veiryf, encrypt or decrypt XML documents.</para>
</sect1>
<sect1 id="xmlsec-examples-sign-template-file">
<title>Signing a template file.</title>
&xmlsec-example-sign1;
&xmlsec-example-sign1-tmpl;
&xmlsec-example-sign1-res;
</sect1>
<sect1 id="xmlsec-examples-sign-dynamimc-template">
<title>Signing a dynamicaly created template.</title>
&xmlsec-example-sign2;
&xmlsec-example-sign2-doc;
&xmlsec-example-sign2-res;
</sect1>
<sect1 id="xmlsec-examples-sign-x509">
<title>Signing with X509 certificate.</title>
&xmlsec-example-sign3;
&xmlsec-example-sign3-doc;
&xmlsec-example-sign3-res;
</sect1>
<sect1 id="xmlsec-verify-with-key">
<title>Verifying a signature with a single key.</title>
&xmlsec-example-verify1;
</sect1>
<sect1 id="xmlsec-verify-with-keys-mngr">
<title>Verifying a signature with keys manager.</title>
&xmlsec-example-verify2;
</sect1>
<sect1 id="xmlsec-verify-with-x509">
<title>Verifying a signature with X509 certificates.</title>
&xmlsec-example-verify3;
</sect1>
<sect1 id="xmlsec-verify-with-restrictions">
<title>Verifying a signature with additional restrictions.</title>
&xmlsec-example-verify4;
&xmlsec-example-verify4-tmpl;
&xmlsec-example-verify4-res;
&xmlsec-example-verify4-bad-tmpl;
&xmlsec-example-verify4-bad-res;
</sect1>
<sect1 id="xmlsec-encrypt-template-file">
<title>Encrypting data with a template file.</title>
&xmlsec-example-encrypt1;
&xmlsec-example-encrypt1-tmpl;
&xmlsec-example-encrypt1-res;
</sect1>
<sect1 id="xmlsec-encrypt-dynamic-template">
<title>Encrypting data with a dynamicaly created template.</title>
&xmlsec-example-encrypt2;
&xmlsec-example-encrypt2-doc;
&xmlsec-example-encrypt2-res;
</sect1>
<sect1 id="xmlsec-encrypt-with-session-key">
<title>Encrypting data with a session key.</title>
&xmlsec-example-encrypt3;
&xmlsec-example-encrypt3-doc;
&xmlsec-example-encrypt3-res;
</sect1>
<sect1 id="xmlsec-decrypt-with-signle-key">
<title>Decrypting data with a single key.</title>
&xmlsec-example-decrypt1;
</sect1>
<sect1 id="xmlsec-decrypt-with-keys-mngr">
<title>Decrypting data with keys manager.</title>
&xmlsec-example-decrypt2;
</sect1>
<sect1 id="xmlsec-custom-keys-manager">
<title>Writing a custom keys manager.</title>
&xmlsec-example-decrypt3;
</sect1>
</chapter>

View File

@ -1,104 +0,0 @@
<chapter id="xmlsec-notes-init-shutdown">
<title>Initialization and shutdown.</title>
<para>XML Security Library initialization/shutdown
process includes initialization and shutdown of the
dependent libraries:
<itemizedlist>
<listitem><para>libxml library;</para></listitem>
<listitem><para>libxslt library;</para></listitem>
<listitem><para>crypto library (OpenSSL, GnuTLS, GCrypt, NSS, ...);</para></listitem>
<listitem><para>xmlsec library
(<link linkend="xmlSecInit">xmlSecInit</link>
and <link linkend="xmlSecShutdown">xmlSecShutdown</link>
functions);
</para></listitem>
<listitem><para>xmlsec-crypto library
(<link linkend="xmlSecCryptoDLLoadLibrary">xmlSecCryptoDLLoadLibrary</link>
to load xmlsec-crypto library dynamicaly if needed,
<link linkend="xmlSecCryptoInit">xmlSecCryptoInit</link>
and <link linkend="xmlSecCryptoShutdown">xmlSecCryptoShutdown</link>
functions);
</para></listitem>
</itemizedlist>
xmlsec-crypto library also provides a convinient functions
<link linkend="xmlSecAppCryptoInit">xmlSecAppCryptoInit</link>
and <link linkend="xmlSecAppCryptoShutdown">xmlSecAppCryptoShutdown</link>
to initialize the crypto library itself but application can do it
by itself.
</para>
<para>
<example>
<title>Initializing application.</title>
<programlisting><![CDATA[
/* Init libxml and libxslt libraries */
xmlInitParser();
LIBXML_TEST_VERSION
xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
xmlSubstituteEntitiesDefault(1);
#ifndef XMLSEC_NO_XSLT
xmlIndentTreeOutput = 1;
#endif /* XMLSEC_NO_XSLT */
/* Init xmlsec library */
if(xmlSecInit() < 0) {
fprintf(stderr, "Error: xmlsec initialization failed.\n");
return(-1);
}
/* Check loaded library version */
if(xmlSecCheckVersion() != 1) {
fprintf(stderr, "Error: loaded xmlsec library version is not compatible.\n");
return(-1);
}
/* Load default crypto engine if we are supporting dynamic
* loading for xmlsec-crypto libraries. Use the crypto library
* name ("openssl", "nss", etc.) to load corresponding
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
"(LD_LIBRARY_PATH) envornment variable.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
/* Init crypto library */
if(xmlSecCryptoAppInit(NULL) < 0) {
fprintf(stderr, "Error: crypto initialization failed.\n");
return(-1);
}
/* Init xmlsec-crypto library */
if(xmlSecCryptoInit() < 0) {
fprintf(stderr, "Error: xmlsec-crypto initialization failed.\n");
return(-1);
}
]]></programlisting>
</example>
</para>
<para>
<example>
<title>Shutting down application.</title>
<programlisting><![CDATA[
/* Shutdown xmlsec-crypto library */
xmlSecCryptoShutdown();
/* Shutdown crypto library */
xmlSecCryptoAppShutdown();
/* Shutdown xmlsec library */
xmlSecShutdown();
/* Shutdown libxslt/libxml */
#ifndef XMLSEC_NO_XSLT
xsltCleanupGlobals();
#endif /* XMLSEC_NO_XSLT */
xmlCleanupParser();
]]></programlisting>
</example>
</para>
</chapter>

View File

@ -1,462 +0,0 @@
<chapter id="xmlsec-notes-new-crypto">
<title>Adding support for new cryptographic library.</title>
<sect1 id="xmlsec-notes-new-crypto-overview">
<title>Overview.</title>
<para>XML Security Library can support practicaly any cryptographic
library. Currently, it has "out-of-the-box" support for OpenSSL,
MSCrypto, NSS, GnuTLS and GCrypt. If your favorite library is not supported yet then
you can write necessary code yourself. If you and your company
(university, ...) are willing to share the results of your work I would
be happy to add support for new libraries to the main XML Security
Library distribution.</para>
<para>
The XML Security Library
<link linkend="xmlsec-notes-structure">separates</link>
the cryptographic library (engine)
specific code in an "xmlsec-&lt;crypto&gt;" library (where "&lt;crypto&gt;" is
"openssl", "mscrypt", "gnutls", "gcrypt", "nss", etc.) which includes following items:
<itemizedlist>
<listitem><para>
xmlSecCryptoApp* functions.
</para></listitem>
<listitem><para>
Cryptographic transforms and keys data implementation.
</para></listitem>
<listitem><para>
Keys store support (X509, PGP, etc.).
</para></listitem>
</itemizedlist>
In this chapter, we will discuss
a task of creating "xmlsec-mycrypto" library that provides support
for your favorite "MyCrypto" cryptographic library.
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-skeleton">
<title>Creating a framework from the skeleton.</title>
<para>
The XML Security Library contains a "skeleton" for creating new
"xmlsec-&lt;crypto&gt;" libraries. In order to create "xmlsec-mycrypto"
library framework, do the following (this example assumes that you
are using *nix system, adjust the commands if you are using something else):
<itemizedlist>
<listitem><para>
Copy src/skeleton and include/xmlsec/skeleton folders to src/mycrypto and
include/xmlsec/mycrypto folders:
<example>
<title>Coping skeleton folders:</title>
<programlisting><![CDATA[
cp -r src/skeleton src/mycrypto
cp -r include/xmlsec/skeleton include/xmlsec/mycrypto
]]></programlisting>
</example>
</para></listitem>
<listitem><para>
Replace "skeleton" with "mycrypto" in the copied files (note that there
are different possible cases here):
<example>
<title>Replacing "skeleton" with "mycrypto".</title>
<programlisting><![CDATA[
for i in `ls include/xmlsec/mycrypto/* src/mycrypto/*`; do
echo Processing $i ..;
sed 's/skeleton/mycrypto/g' $i | \
sed 's/SKELETON/MYCRYPTO/g' | \
sed 's/Skeleton/MyCrypto/g' > $i.tmp;
mv $i.tmp $i;
done
]]></programlisting>
</example>
</para></listitem>
<listitem><para>
Add "xmlsec-mycrypto" library to the "include/xmlsec/crypto.h" file:
<example>
<title>Modifying include/xmlsec/crypto.h file.</title>
<programlisting><![CDATA[
...
#ifdef XMLSEC_CRYPTO_MYCRYPTO
#include <xmlsec/mycrypto/app.h>
#include <xmlsec/mycrypto/crypto.h>
#include <xmlsec/mycrypto/symbols.h>
#else /* XMLSEC_CRYPTO_MYCRYPTO */
...
#endif /* XMLSEC_CRYPTO_MYCRYPTO */
...
]]></programlisting>
</example>
</para></listitem>
<listitem><para>
Add "xmlsec-crypto" library to the configure.in file (for *nix systems;
for Windows you need to modify win32/confgure.js and win32/Makefile.msvc
files, see win32/README.txt for details):
<example>
<title>Modifying configure.in file.</title>
<programlisting><![CDATA[
dnl ==========================================================================
dnl See if we can find MyCrypto
dnl ==========================================================================
XMLSEC_MYCRYPTO_DEFINES=""
MYCRYPTO_CONFIG="mycrypto-config" # TODO
XMLSEC_NO_MYCRYPTO="1"
MYCRYPTO_MIN_VERSION="0.0.0" # TODO
MYCRYPTO_VERSION=""
MYCRYPTO_PREFIX=""
MYCRYPTO_CFLAGS=""
MYCRYPTO_LIBS=""
MYCRYPTO_LDADDS=""
AC_MSG_CHECKING(for mycrypto libraries >= $MYCRYPTO_MIN_VERSION)
AC_ARG_WITH(mycrypto, [ --with-mycrypto=[PFX] mycrypto location])
if test "$with_mycrypto" = "no" ; then
XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mycrypto"
AC_MSG_RESULT(no)
else
if test "$with_mycrypto" != "" ; then
MYCRYPTO_PREFIX=$with_mycrypto
MYCRYPTO_CONFIG=$MYCRYPTO_PREFIX/bin/$MYCRYPTO_CONFIG
fi
if ! $MYCRYPTO_CONFIG --version > /dev/null 2>&1 ; then
if test "$with_mycrypto" != "" ; then
AC_MSG_ERROR(Unable to find mycrypto at '$with_mycrypto')
fi
else
vers=`$MYCRYPTO_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
minvers=`echo $MYCRYPTO_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
if test "$vers" -ge "$minvers" ; then
MYCRYPTO_LIBS="`$MYCRYPTO_CONFIG --libs`"
MYCRYPTO_CFLAGS="`$MYCRYPTO_CONFIG --cflags`"
MYCRYPTO_VERSION="`$MYCRYPTO_CONFIG --version`"
XMLSEC_NO_MYCRYPTO="0"
else
AC_MSG_ERROR(You need at least mycrypto $MYCRYPTO_MIN_VERSION for this version of $PACKAGE)
fi
fi
dnl update crypt libraries list
if test "z$XMLSEC_NO_MYCRYPTO" = "z0" ; then
dnl first crypto library is default one
if test "z$XMLSEC_CRYPTO" = "z" ; then
XMLSEC_CRYPTO="mycrypto"
XMLSEC_CRYPTO_LIB="xmlsec1-mycrypto"
XMLSEC_CRYPTO_CFLAGS="$MYCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MYCRYPTO=1"
XMLSEC_CRYPTO_LIBS="$MYCRYPTO_LIBS"
XMLSEC_CRYPTO_LDADDS="$MYCRYPTO_LDADDS"
fi
XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST mycrypto"
AC_MSG_RESULT(yes ('$MYCRYPTO_VERSION'))
else
XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mycrypto"
AC_MSG_RESULT(no)
fi
fi
AC_SUBST(XMLSEC_NO_MYCRYPTO)
AC_SUBST(MYCRYPTO_MIN_VERSION)
AC_SUBST(MYCRYPTO_VERSION)
AC_SUBST(MYCRYPTO_CONFIG)
AC_SUBST(MYCRYPTO_PREFIX)
AC_SUBST(MYCRYPTO_CFLAGS)
AC_SUBST(MYCRYPTO_LIBS)
AC_SUBST(MYCRYPTO_LDADDS)
AC_SUBST(XMLSEC_MYCRYPTO_DEFINES)
...
AC_OUTPUT([
...
include/xmlsec/mycrypto/Makefile
src/mycrypto/Makefile
...
])
]]></programlisting>
</example>
</para></listitem>
<listitem><para>Modify "xmlsec.spec.in" file to create "xmlsec-mycrypto"
RPM (if necessary).
</para></listitem>
</itemizedlist>
By now you should be able to sucessfuly compile XML Security Library
with MyCrypto library (we disable all other libraries to make sure
that xmlsec command line utility is linked against xmlsec-mycrypto
library):
<example>
<title>Compiling the results.</title>
<programlisting><![CDATA[
./autogen.sh --without-openssl --without-nss --without-gnutls --without-gcrypt \
--with-mycrypto=$HOME --disable-tmpl-tests
make
]]></programlisting>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-functions">
<title>xmlSecCryptoApp* functions.</title>
<para>
The XML Security Library allows application to load multiple
"xmlsec-&lt;crypto&gt; libraries. To prevent symbol conflicts,
all "xmlsec-mycrypto" library names MUST start with "xmlSecMyCrypto".
However, in some applications (for example, the xmlsec command line
utility) that can use any crypto library, would prefer to
use a generic function names where possible.
The "include/xmlsec/crypto.h" and "include/xmlsec/mycrypto/symbols.h"
include files do the magic by mapping "xmlSecMyCrypto*" to
"xmlSecCrypto*" names using "XMLSEC_CRYPTO_*" defines.
</para>
<para>
In order to build xmlsec command line utility, the
"xmlsec-&lt;crypto&gt;" library must implement several functions.
The stubs for all these functions are provided in the "skeleton"
we've created. While these functions are not required to be
implemented by "xmlsec-&lt;crypto&gt;" library, you should consider
doing so (if possible) to simplify testing (thru xmlsec command line
utility) and application development.
</para>
<para>
In adition to xmlSecCryptoApp* functions, the xmlsec-&lt;crypto&gt;
library MUST implement following xmlSecCrypto* functions:
<table>
<title>xmlSecCrypto* functions.</title>
<tgroup cols="2"><tbody>
<row><entry>xmlSecCryptoInit()</entry>
<entry>Initializes xmlsec-&lt;crypto&gt; library: registers cryptographic
transforms implemented by the library, keys, etc.
Please note, that the application might want to intialize
the cryprographic library by itself. The default cryprographic
library initialization (for example, used by xmlsec utility)
is implemented in xmlSecCryptoAppInit() function.
</entry></row>
<row><entry>xmlSecCryptoShutdown()</entry>
<entry>Shuts down xmlsec-&lt;crypto&gt; library.
Please note, that the application might want to shutdown
the cryprographic library by itself. The default cryprographic
library shutdown (for example, used by xmlsec utility)
is implemented in xmlSecCryptoAppShutdown() function.
</entry></row>
<row><entry>xmlSecCryptoKeysMngrInit()</entry>
<entry>Adds keys stores implemented by the xmlsec-&lt;crypto&gt; library
to the keys manager object.
</entry></row>
</tbody></tgroup></table>
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-klasses">
<title>Klasses and objects.</title>
<para>The XML Security Library is written in C but it uses some OOP techniques:
the objects in the library have "klasses" and there is "klasses" inheritance.
(see <link linkend="xmlsec-signature-klasses">signature</link> and
<link linkend="xmlsec-encryption-klasses">encryption</link> klasses
diagrams). The "klass" is different from C++ "class" (btw, this is
one of the reasons why it is spelled differently). The idea of "klasses"
used in XML Security Library are close to one in the GLIB/GTK/GNOME
and many other C projects. If you ever seen an OOP code written in C
you should find everything familiar.
</para>
<para>XML Security Library "klass" includes three main parts:
<itemizedlist>
<listitem><para>"Klass" declaration structure that defines "klass" interfaces
and global constant data (for example, the human-readable name of
the "klass").
<example>
<title>Base transform "klass" and its child XPath transform "klass" structure.</title>
<programlisting><![CDATA[
struct _xmlSecTransformKlass {
/* data */
size_t klassSize;
size_t objSize;
const xmlChar* name;
const xmlChar* href;
xmlSecTransformUsage usage;
/* methods */
xmlSecTransformInitializeMethod initialize;
xmlSecTransformFinalizeMethod finalize;
xmlSecTransformNodeReadMethod readNode;
xmlSecTransformNodeWriteMethod writeNode;
...
};
...
static xmlSecTransformKlass xmlSecTransformXPathKlass = {
/* klass/object sizes */
sizeof(xmlSecTransformKlass), /* size_t klassSize */
xmlSecXPathTransformSize, /* size_t objSize */
xmlSecNameXPath, /* const xmlChar* name; */
xmlSecXPathNs, /* const xmlChar* href; */
xmlSecTransformUsageDSigTransform, /* xmlSecTransformUsage usage; */
xmlSecTransformXPathInitialize, /* xmlSecTransformInitializeMethod initialize; */
xmlSecTransformXPathFinalize, /* xmlSecTransformFinalizeMethod finalize; */
xmlSecTransformXPathNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
...
};
]]></programlisting>
</example>
</para></listitem>
<listitem><para>"Klass" id which is simply a pointer to the "klass"
declaration strucutre. "Klass" id is used to bind "klass" objects
to the "klass" declaration and to pass "klass" strucutre to functions.
<example>
<title>Base transform "klass" id declaration and its child XPath transform "klass" id implementation.</title>
<programlisting><![CDATA[
typedef const struct _xmlSecTransformKlass xmlSecTransformKlass, *xmlSecTransformId;
...
#define xmlSecTransformXPathId xmlSecTransformXPathGetKlass()
...
xmlSecTransformId
xmlSecTransformXPathGetKlass(void) {
return(&xmlSecTransformXPathKlass);
}
]]></programlisting>
</example>
</para></listitem>
<listitem><para>"Klass" object structure that contains object specific
data. The child object specific data are placed after the parent "klass"
object data.
<example>
<title>Base transform object strucutre and its child XPath transform object.</title>
<programlisting><![CDATA[
struct _xmlSecTransform {
xmlSecTransformId id;
xmlSecTransformOperation operation;
xmlSecTransformStatus status;
xmlNodePtr hereNode;
/* transforms chain */
xmlSecTransformPtr next;
xmlSecTransformPtr prev;
...
};
...
/******************************************************************************
*
* XPath/XPointer transforms
*
* xmlSecPtrList with XPath expressions is located after xmlSecTransform structure
*
*****************************************************************************/
#define xmlSecXPathTransformSize \
(sizeof(xmlSecTransform) + sizeof(xmlSecPtrList))
#define xmlSecXPathTransformGetDataList(transform) \
((xmlSecTransformCheckSize((transform), xmlSecXPathTransformSize)) ? \
(xmlSecPtrListPtr)(((unsigned char*)(transform)) + sizeof(xmlSecTransform)) : \
(xmlSecPtrListPtr)NULL)
]]></programlisting>
</example>
</para></listitem>
</itemizedlist>
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-transforms">
<title>Cryptographic transforms.</title>
<para>The cryptographic transforms (digests, signatures and encryption)
implementation is the main goal of "xmlsec-&lt;crypto&gt;" library.
Most of the cryptographic <link linkend="xmlsec-notes-transforms">transforms</link>
use default <structfield>pushBin</structfield> and <structfield>popBin</structfield>
methods and provide custom <link linkend="xmlSecTransformExecuteMethod">execute</link> method.
The binary transform <link linkend="xmlSecTransformExecuteMethod">execute</link> method
processes data from the input buffer
<structfield>inBuf</structfield> and pushes results to
<structfield>outBuf</structfield>. The transform should try to
consume and remove data from <structfield>inBuf</structfield> buffer
as soon as the data became available. However, it might happen
that current data size in the input buffer is not enough (for example,
RSA-PKCS1 algorithm requires that all the data are available in
one buffer). In this case, transform might keep the data in the
input buffer till the next call to
<link linkend="xmlSecTransformExecuteMethod">execute</link>
method. The "last" parameter of the
<link linkend="xmlSecTransformExecuteMethod">execute</link>
indicates that transform MUST process all the data in the input buffer
and return as much as possible in the output buffer. The
<link linkend="xmlSecTransformExecuteMethod">execute</link> method
might be called multiple times with non-zero "last" parameter until
the transforms returns nothing
in the output buffer. In addition, the transform implementation is
responsible for managing the transform <structfield>status</structfield>
variable.
<table>
<title>Typical transform status managing.</title>
<tgroup cols="2"><tbody>
<row><entry>xmlSecTransformStatusNone</entry>
<entry>Transform initializes itself (for example, cipher transform
generates or reads IV) and sets <structfield>status</structfield>
variable to xmlSecTransformStatusWorking.</entry></row>
<row><entry>xmlSecTransformStatusWorking</entry>
<entry>Transform process the next (if "last" parameter is zero) or
last block of data (if "last" parameter is non-zero).
When transform returns all the data, it sets the
<structfield>status</structfield> variable to
xmlSecTransformStatusFinished.</entry></row>
<row><entry>xmlSecTransformStatusFinished</entry>
<entry>Transform returns no data to indicate that it finished
processing.</entry></row>
</tbody></tgroup></table>
</para>
<para>In adition to <link linkend="xmlSecTransformExecuteMethod">execute</link>
methods, signature, hmac or digest transforms
MUST implement <link linkend="xmlSecTransformVerifyMethod">verify</link> method.
The <link linkend="xmlSecTransformVerifyMethod">verify</link> method is called
after transform execution is finished. The
<link linkend="xmlSecTransformVerifyMethod">verify</link> method implementation
must set the "status" member to <link linkend="xmlSecTransformStatusOk">xmlSecTransformStatusOk</link>
if signature, hmac or digest is successfuly verified or to
<link linkend="xmlSecTransformStatusFail">xmlSecTransformStatusFail</link>
otherwise.
</para>
<para>The transforms that require a key (signature or encryption
transforms, for example) MUST imlpement
<link linkend="xmlSecTransformSetKeyRequirementsMethod">setKeyReq</link>
(prepares the <link linkend="xmlSecKeyReq">key requirements</link>
for key search) and
<link linkend="xmlSecTransformSetKeyMethod">setKey</link>
(sets the key in the transform) methods.
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-keys">
<title>Keys data and keys data stores.</title>
<para>
There are two key data types: key value data (for example, AES, DES, DSA,
HMAC or RSA key data) and others (for example, key name, X509 or PGP data).
The key data implementation should implement at least one of
<link linkend="xmlSecKeyDataXmlReadMethod">xmlRead</link>
or <link linkend="xmlSecKeyDataBinReadMethod">binRead</link> methods.
</para>
<para>TODO</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-simple-keys-mngr">
<title>Default keys manager.</title>
<para>Any "xmlsec-&lt;crypto&gt;" library implementation must provide
a default keys store. The XML Security Library has a built-in flat
list based <link linkend="xmlSecSimpleKeysStoreId">simple keys
store</link> which could be used if cryptographic library does not
have one itself.
</para>
</sect1>
<sect1 id="xmlsec-notes-new-crypto-sharing-results">
<title>Sharing the results.</title>
<para>If you implemented support for new cryptographic library
(or extended an existing one) and both you and your company/university/...
are willing to share the code I would be glad to add your work
to XML Security Library. Many people will thank you for this
and will use your library. Of course, you'll get all the credits
for your work.
</para>
<para>The best way to submit your enchancements is to send a pull request
through <ulink URL="https://github.com/lsh123/xmlsec">GitHub</ulink>.
I will try to review and merge your pool request as soon as possible.
</para>
</sect1>
</chapter>

View File

@ -1,286 +0,0 @@
<chapter id="xmlsec-notes-sign-encrypt">
<title>Signing and encrypting documents.</title>
<sect1 id="xmlsec-notes-sign-encrypt-overview">
<title>Overview.</title>
<para>XML Security Library performs signature or encryption by processing
input xml or binary data and a template that specifies a signature or
encryption skeleton: the transforms, algorithms, the key selection
process. A template has the same structure as the desired result but
some of the nodes are empty. XML Security Library gets the key for
signature/encryption from keys managers using the information from
the template, does necessary computations and puts the results in
the template. Signature or encryption context controls the whole
process and stores the required temporary data.
<figure>
<title>The signature or encryption processing model.</title>
<graphic fileref="images/sign-enc-model.png" align="center"></graphic>
</figure>
</para>
</sect1>
<sect1 id="xmlsec-notes-sign" >
<title>Signing a document.</title>
<para>The typical signature process includes following steps:
<itemizedlist>
<listitem><para>
Prepare data for signature.
</para></listitem>
<listitem><para>
Create or load signature template and select start
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature">&lt;dsig:Signature/&gt;</ulink>
node.
</para></listitem>
<listitem><para>
Create signature context <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
using <link linkend="xmlSecDSigCtxCreate">xmlSecDSigCtxCreate</link> or
<link linkend="xmlSecDSigCtxInitialize">xmlSecDSigCtxInitialize</link>
functions.
</para></listitem>
<listitem><para>
Load signature key in <link linkend="xmlSecKeysMngr">keys manager</link>
or generate a session key and set it in the signature context
(<structfield>signKey</structfield> member of
<link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link> structure).
</para></listitem>
<listitem><para>
Sign data by calling <link linkend="xmlSecDSigCtxSign">xmlSecDSigCtxSign</link>
function.
</para></listitem>
<listitem><para>
Check returned value and consume signed data.
</para></listitem>
<listitem><para>
Destroy signature context <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
using <link linkend="xmlSecDSigCtxDestroy">xmlSecDSigCtxDestroy</link> or
<link linkend="xmlSecDSigCtxFinalize">xmlSecDSigCtxFinalize</link>
functions.
</para></listitem>
</itemizedlist>
</para>
<para>
<example>
<title>Signing a template.</title>
<programlisting><![CDATA[
/**
* sign_file:
* @tmpl_file: the signature template file name.
* @key_file: the PEM private key file name.
*
* Signs the #tmpl_file using private key from #key_file.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
sign_file(const char* tmpl_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
assert(tmpl_file);
assert(key_file);
/* load template */
doc = xmlParseFile(tmpl_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", tmpl_file);
goto done;
}
/* find start node */
node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeSignature, xmlSecDSigNs);
if(node == NULL) {
fprintf(stderr, "Error: start node not found in \"%s\"\n", tmpl_file);
goto done;
}
/* create signature context, we don't need keys manager in this example */
dsigCtx = xmlSecDSigCtxCreate(NULL);
if(dsigCtx == NULL) {
fprintf(stderr,"Error: failed to create signature context\n");
goto done;
}
/* load private key, assuming that there is not password */
dsigCtx->signKey = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(dsigCtx->signKey == NULL) {
fprintf(stderr,"Error: failed to load private pem key from \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(dsigCtx->signKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* sign the template */
if(xmlSecDSigCtxSign(dsigCtx, node) < 0) {
fprintf(stderr,"Error: signature failed\n");
goto done;
}
/* print signed document to stdout */
xmlDocDump(stdout, doc);
/* success */
res = 0;
done:
/* cleanup */
if(dsigCtx != NULL) {
xmlSecDSigCtxDestroy(dsigCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-sign1">Full program listing</link></simpara>
<simpara><link linkend="xmlsec-example-sign1-tmpl">Simple signature template file</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-encrypt">
<title>Encrypting data.</title>
<para>The typical encryption process includes following steps:
<itemizedlist>
<listitem><para>
Prepare data for encryption.
</para></listitem>
<listitem><para>
Create or load encryption template and select start
&lt;enc:EncryptedData/&gt; node.
</para></listitem>
<listitem><para>
Create encryption context <link linkend="xmlSecEncCtx">xmlSecEncCtx</link>
using <link linkend="xmlSecEncCtxCreate">xmlSecEncCtxCreate</link> or
<link linkend="xmlSecEncCtxInitialize">xmlSecEncCtxInitialize</link>
functions.
</para></listitem>
<listitem><para>
Load encryption key in <link linkend="xmlSecKeysMngr">keys manager</link>
or generate a session key and set it in the encryption context
(<structfield>encKey</structfield> member of
<link linkend="xmlSecEncCtx">xmlSecEncCtx</link> structure).
</para></listitem>
<listitem><para>
Encrypt data by calling one of the following functions:
<itemizedlist>
<listitem><para>
<link linkend="xmlSecEncCtxBinaryEncrypt">xmlSecEncCtxBinaryEncrypt</link>
</para></listitem>
<listitem><para>
<link linkend="xmlSecEncCtxXmlEncrypt">xmlSecEncCtxXmlEncrypt</link>
</para></listitem>
<listitem><para>
<link linkend="xmlSecEncCtxUriEncrypt">xmlSecEncCtxUriEncrypt</link>
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>
Check returned value and if necessary consume encrypted data.
</para></listitem>
<listitem><para>
Destroy encryption context <link linkend="xmlSecEncCtx">xmlSecEncCtx</link>
using <link linkend="xmlSecEncCtxDestroy">xmlSecEncCtxDestroy</link> or
<link linkend="xmlSecEncCtxFinalize">xmlSecEncCtxFinalize</link>
functions.
</para></listitem>
</itemizedlist>
</para>
<para>
<example>
<title>Encrypting binary data with a template.</title>
<programlisting><![CDATA[
/**
* encrypt_file:
* @tmpl_file: the encryption template file name.
* @key_file: the Triple DES key file.
* @data: the binary data to encrypt.
* @dataSize: the binary data size.
*
* Encrypts binary #data using template from #tmpl_file and DES key from
* #key_file.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
encrypt_file(const char* tmpl_file, const char* key_file, const unsigned char* data, size_t dataSize) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
xmlSecEncCtxPtr encCtx = NULL;
int res = -1;
assert(tmpl_file);
assert(key_file);
assert(data);
/* load template */
doc = xmlParseFile(tmpl_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", tmpl_file);
goto done;
}
/* find start node */
node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeEncryptedData, xmlSecEncNs);
if(node == NULL) {
fprintf(stderr, "Error: start node not found in \"%s\"\n", tmpl_file);
goto done;
}
/* create encryption context, we don't need keys manager in this example */
encCtx = xmlSecEncCtxCreate(NULL);
if(encCtx == NULL) {
fprintf(stderr,"Error: failed to create encryption context\n");
goto done;
}
/* load DES key */
encCtx->encKey = xmlSecKeyReadBinaryFile(xmlSecKeyDataDesId, key_file);
if(encCtx->encKey == NULL) {
fprintf(stderr,"Error: failed to load des key from binary file \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(encCtx->encKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* encrypt the data */
if(xmlSecEncCtxBinaryEncrypt(encCtx, node, data, dataSize) < 0) {
fprintf(stderr,"Error: encryption failed\n");
goto done;
}
/* print encrypted data with document to stdout */
xmlDocDump(stdout, doc);
/* success */
res = 0;
done:
/* cleanup */
if(encCtx != NULL) {
xmlSecEncCtxDestroy(encCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-encrypt1">Full program listing</link></simpara>
<simpara><link linkend="xmlsec-example-encrypt1-tmpl">Simple encryption template file</link></simpara>
</example>
</para>
</sect1>
</chapter>

View File

@ -1,138 +0,0 @@
<chapter id="xmlsec-notes-contexts">
<title>Using context objects.</title>
<para>The great flexibility of XML Digital Signature and XML Encryption
specification is one of the most interesting and in the same time,
most dangerouse feature for an application developer.
For example, XPath and XSLT transform can make it very difficult
to find out what exactly was signed by just looking at the
transforms and the input data. Many protocols based on
XML Digital Signature and XML Encryption restrict allowed
key data types, allowed transforms or possible input data.
For example, signature in a simple SAML Response should have only
one &lt;dsig:Reference/&gt; element with an empty or NULL
URI attribute and only one enveloped transform.
XML Security Library uses "context" objects to let application
enable or disable particular features, return the result
data and the information collected during the processing.
Also all the context objects defined in XML Security library have
a special <structfield>userData</structfield> member which could
be used by application to pass application specific data around.
XML Security Library never use this field.
The application creates a new
<link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
or <link linkend="xmlSecEncCtx">xmlSecEncCtx</link> object for each
operation, sets necessary options and consumes result returned
in the context after signature, verification, encryption or decryption.
</para>
<para>
<example>
<title>SAML signature validation.</title>
<programlisting><![CDATA[
/**
* verify_file:
* @mngr: the pointer to keys manager.
* @xml_file: the signed XML file name.
*
* Verifies XML signature in #xml_file.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
verify_file(xmlSecKeysMngrPtr mngr, const char* xml_file) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
assert(mngr);
assert(xml_file);
/* load file */
doc = xmlParseFile(xml_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_file);
goto done;
}
/* find start node */
node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeSignature, xmlSecDSigNs);
if(node == NULL) {
fprintf(stderr, "Error: start node not found in \"%s\"\n", xml_file);
goto done;
}
/* create signature context */
dsigCtx = xmlSecDSigCtxCreate(mngr);
if(dsigCtx == NULL) {
fprintf(stderr,"Error: failed to create signature context\n");
goto done;
}
/* limit the Reference URI attributes to empty or NULL */
dsigCtx->enabledReferenceUris = xmlSecTransformUriTypeEmpty;
/* limit allowed transforms for signature and reference processing */
if((xmlSecDSigCtxEnableSignatureTransform(dsigCtx, xmlSecTransformInclC14NId) < 0) ||
(xmlSecDSigCtxEnableSignatureTransform(dsigCtx, xmlSecTransformExclC14NId) < 0) ||
(xmlSecDSigCtxEnableSignatureTransform(dsigCtx, xmlSecTransformSha1Id) < 0) ||
(xmlSecDSigCtxEnableSignatureTransform(dsigCtx, xmlSecTransformRsaSha1Id) < 0)) {
fprintf(stderr,"Error: failed to limit allowed signature transforms\n");
goto done;
}
if((xmlSecDSigCtxEnableReferenceTransform(dsigCtx, xmlSecTransformInclC14NId) < 0) ||
(xmlSecDSigCtxEnableReferenceTransform(dsigCtx, xmlSecTransformExclC14NId) < 0) ||
(xmlSecDSigCtxEnableReferenceTransform(dsigCtx, xmlSecTransformSha1Id) < 0) ||
(xmlSecDSigCtxEnableReferenceTransform(dsigCtx, xmlSecTransformEnvelopedId) < 0)) {
fprintf(stderr,"Error: failed to limit allowed reference transforms\n");
goto done;
}
/* in addition, limit possible key data to valid X509 certificates only */
if(xmlSecPtrListAdd(&(dsigCtx->keyInfoReadCtx.enabledKeyData), BAD_CAST xmlSecKeyDataX509Id) < 0) {
fprintf(stderr,"Error: failed to limit allowed key data\n");
goto done;
}
/* Verify signature */
if(xmlSecDSigCtxVerify(dsigCtx, node) < 0) {
fprintf(stderr,"Error: signature verify\n");
goto done;
}
/* check that we have only one Reference */
if((dsigCtx->status == xmlSecDSigStatusSucceeded) &&
(xmlSecPtrListGetSize(&(dsigCtx->signedInfoReferences)) != 1)) {
fprintf(stderr,"Error: only one reference is allowed\n");
goto done;
}
/* print verification result to stdout */
if(dsigCtx->status == xmlSecDSigStatusSucceeded) {
fprintf(stdout, "Signature is OK\n");
} else {
fprintf(stdout, "Signature is INVALID\n");
}
/* success */
res = 0;
done:
/* cleanup */
if(dsigCtx != NULL) {
xmlSecDSigCtxDestroy(dsigCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
</example>
</para>
</chapter>

View File

@ -1,26 +0,0 @@
<chapter id="xmlsec-notes-keys">
<title>Keys.</title>
<para>A key in XML Security Library is a representation of the
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink>
element and consist of several key data objects.
The "value" key data usually contains raw key material (or handlers to
key material) required to execute particular crypto transform. Other
key data objects may contain any additional information about the key.
All the key data objects in the key are associated with the same key
material. For example, if a DSA key material has both an X509
certificate and a PGP data associated with it then such a key can
have a DSA key "value" and two key data objects for X509 certificate
and PGP key data.
</para>
<figure>
<title>The key structure.</title>
<graphic fileref="images/key.png" align="center"></graphic>
</figure>
<para>XML Security Library has several "invisible" key data classes.
These classes never show up in the keys data list of a key but are used for
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink>
children processing (<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName">&lt;dsig:KeyName/&gt;</ulink>,
&lt;enc:EncryptedKey/&gt;, ...). As with transforms, application might
add any new key data objects or replace the default ones.
</para>
</chapter>

View File

@ -1,592 +0,0 @@
<chapter id="xmlsec-notes-keysmngr">
<title>Keys manager.</title>
<sect1 id="xmlsec-notes-keysmngr-overview">
<title>Overview.</title>
<para>Processing some of the key data objects require additional
information which is global across the application (or in the
particular area of the application). For example, X509 certificates
processing require a common list of trusted certificates to be
available. XML Security Library keeps all the common information
for key data processing in a a collection of key data stores called
"keys manager".
</para>
<figure>
<title>The keys manager structure.</title>
<graphic fileref="images/keysmngr.png" align="center"></graphic>
</figure>
<para>Keys manager has a special "keys store" which lists the keys
known to the application. This "keys store" is used by XML Security
Library to lookup keys by name, type and crypto algorithm (for example,
during
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName">&lt;dsig:KeyName/&gt;</ulink>
processing). The XML Security Library
provides default simple "flat list" based implementation of a default keys
store. The application can replace it with any other keys store
(for example, based on an SQL database).
</para>
<para>Keys manager is the only object in XML Security Library which
is supposed to be shared by many different operations. Usually keys
manager is initialized once at the application startup and later is
used by XML Security library routines in "read-only" mode. If
application or crypto function need to modify any of the key data
stores inside keys manager then proper synchronization must be
implemented. In the same time, application can create a new keys
manager each time it needs to perform XML signature, verification,
encryption or decryption.
</para>
</sect1>
<sect1 id="xmlsec-notes-simple-keys-store">
<title>Simple keys store.</title>
<para>
XML Security Library has a built-in simple keys store
implemented using a keys list. You can use it in your application
if you have a small number of keys. However, this might be not a
best option from performance point of view if you have a lot of keys.
In this case, you probably should implement your own keys store
using an SQL database or some other keys storage.
</para>
<para>
<example>
<title>Initializing keys manager and loading keys from PEM files.</title>
<programlisting><![CDATA[
/**
* load_keys:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
*
* Creates default keys manager and load PEM keys from #files in it.
* The caller is responsible for destroing returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
* occurs.
*/
xmlSecKeysMngrPtr
load_keys(char** files, int files_size) {
xmlSecKeysMngrPtr mngr;
xmlSecKeyPtr key;
int i;
assert(files);
assert(files_size > 0);
/* create and initialize keys manager, we use a default list based
* keys manager, implement your own xmlSecKeysStore klass if you need
* something more sophisticated
*/
mngr = xmlSecKeysMngrCreate();
if(mngr == NULL) {
fprintf(stderr, "Error: failed to create keys manager.\n");
return(NULL);
}
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
fprintf(stderr, "Error: failed to initialize keys manager.\n");
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
for(i = 0; i < files_size; ++i) {
assert(files[i]);
/* load key */
key = xmlSecCryptoAppKeyLoad(files[i], xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(key == NULL) {
fprintf(stderr,"Error: failed to load pem key from \"%s\"\n", files[i]);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(key, BAD_CAST files[i]) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", files[i]);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* add key to keys manager, from now on keys manager is responsible
* for destroying key
*/
if(xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key) < 0) {
fprintf(stderr,"Error: failed to add key from \"%s\" to keys manager\n", files[i]);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
}
return(mngr);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-verify2">Full program listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-keys-manager-sign-enc">
<title>Using keys manager for signatures/encryption.</title>
<para>Instead of specifiying signature or encryption key in the
corresponding context object (<structfield>signKey</structfield>
member of <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
structure or <structfield>encKey</structfield> member of
<link linkend="xmlSecEncCtx">xmlSecEncCtx</link> structure),
the application can use keys manager to select the
signature or encryption key. This is especialy useful
when you are encrypting or signing something with a session key
which is by itself should be encrypted. The key for the
session key encryption in the
<ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey">&lt;EncryptedKey/&gt;</ulink>
node could be selected using
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName">&lt;dsig:KeyName/&gt;</ulink>
node in the template.
</para>
<para>
<example>
<title>Encrypting file using a session key and a permanent key from keys manager.</title>
<programlisting><![CDATA[
/**
* load_rsa_keys:
* @key_file: the key filename.
*
* Creates default keys manager and load RSA key from #key_file in it.
* The caller is responsible for destroing returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
* occurs.
*/
xmlSecKeysMngrPtr
load_rsa_keys(char* key_file) {
xmlSecKeysMngrPtr mngr;
xmlSecKeyPtr key;
assert(key_file);
/* create and initialize keys manager, we use a default list based
* keys manager, implement your own xmlSecKeysStore klass if you need
* something more sophisticated
*/
mngr = xmlSecKeysMngrCreate();
if(mngr == NULL) {
fprintf(stderr, "Error: failed to create keys manager.\n");
return(NULL);
}
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
fprintf(stderr, "Error: failed to initialize keys manager.\n");
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* load private RSA key */
key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(key == NULL) {
fprintf(stderr,"Error: failed to load rsa key from file \"%s\"\n", key_file);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(key, BAD_CAST key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* add key to keys manager, from now on keys manager is responsible
* for destroying key
*/
if(xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key) < 0) {
fprintf(stderr,"Error: failed to add key from \"%s\" to keys manager\n", key_file);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
return(mngr);
}
/**
* encrypt_file:
* @mngr: the pointer to keys manager.
* @xml_file: the encryption template file name.
* @key_name: the RSA key name.
*
* Encrypts #xml_file using a dynamicaly created template, a session DES key
* and an RSA key from keys manager.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
encrypt_file(xmlSecKeysMngrPtr mngr, const char* xml_file, const char* key_name) {
xmlDocPtr doc = NULL;
xmlNodePtr encDataNode = NULL;
xmlNodePtr keyInfoNode = NULL;
xmlNodePtr encKeyNode = NULL;
xmlNodePtr keyInfoNode2 = NULL;
xmlSecEncCtxPtr encCtx = NULL;
int res = -1;
assert(mngr);
assert(xml_file);
assert(key_name);
/* load template */
doc = xmlParseFile(xml_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_file);
goto done;
}
/* create encryption template to encrypt XML file and replace
* its content with encryption result */
encDataNode = xmlSecTmplEncDataCreate(doc, xmlSecTransformDes3CbcId,
NULL, xmlSecTypeEncElement, NULL, NULL);
if(encDataNode == NULL) {
fprintf(stderr, "Error: failed to create encryption template\n");
goto done;
}
/* we want to put encrypted data in the <enc:CipherValue/> node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
/* add <dsig:KeyInfo/> */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
/* add <enc:EncryptedKey/> to store the encrypted session key */
encKeyNode = xmlSecTmplKeyInfoAddEncryptedKey(keyInfoNode,
xmlSecTransformRsaOaepId,
NULL, NULL, NULL);
if(encKeyNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
/* we want to put encrypted key in the <enc:CipherValue/> node */
if(xmlSecTmplEncDataEnsureCipherValue(encKeyNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
/* add <dsig:KeyInfo/> and <dsig:KeyName/> nodes to <enc:EncryptedKey/> */
keyInfoNode2 = xmlSecTmplEncDataEnsureKeyInfo(encKeyNode, NULL);
if(keyInfoNode2 == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
/* set key name so we can lookup key when needed */
if(xmlSecTmplKeyInfoAddKeyName(keyInfoNode2, key_name) == NULL) {
fprintf(stderr, "Error: failed to add key name\n");
goto done;
}
/* create encryption context */
encCtx = xmlSecEncCtxCreate(mngr);
if(encCtx == NULL) {
fprintf(stderr,"Error: failed to create encryption context\n");
goto done;
}
/* generate a Triple DES key */
encCtx->encKey = xmlSecKeyGenerate(xmlSecKeyDataDesId, 192, xmlSecKeyDataTypeSession);
if(encCtx->encKey == NULL) {
fprintf(stderr,"Error: failed to generate session des key\n");
goto done;
}
/* encrypt the data */
if(xmlSecEncCtxXmlEncrypt(encCtx, encDataNode, xmlDocGetRootElement(doc)) < 0) {
fprintf(stderr,"Error: encryption failed\n");
goto done;
}
/* we template is inserted in the doc */
encDataNode = NULL;
/* print encrypted data with document to stdout */
xmlDocDump(stdout, doc);
/* success */
res = 0;
done:
/* cleanup */
if(encCtx != NULL) {
xmlSecEncCtxDestroy(encCtx);
}
if(encDataNode != NULL) {
xmlFreeNode(encDataNode);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-encrypt3">Full program listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-keys-mngr-verify-decrypt">
<title>Using keys manager for verification/decryption.</title>
<para>If more than one key could be used for signature or encryption,
then using <structfield>signKey</structfield> member of
<link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link> structure or
<structfield>encKey</structfield> member of
<link linkend="xmlSecEncCtx">xmlSecEncCtx</link> structure
is not possible. Instead, the application should load known keys in
the keys manager and use &lt;dsig:KeyName/&gt; element to specify
the key name.
</para>
<para>
<example>
<title>Initializing keys manager and loading DES keys from binary files.</title>
<programlisting><![CDATA[
/**
* load_des_keys:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
*
* Creates default keys manager and load DES keys from #files in it.
* The caller is responsible for destroing returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
* occurs.
*/
xmlSecKeysMngrPtr
load_des_keys(char** files, int files_size) {
xmlSecKeysMngrPtr mngr;
xmlSecKeyPtr key;
int i;
assert(files);
assert(files_size > 0);
/* create and initialize keys manager, we use a default list based
* keys manager, implement your own xmlSecKeysStore klass if you need
* something more sophisticated
*/
mngr = xmlSecKeysMngrCreate();
if(mngr == NULL) {
fprintf(stderr, "Error: failed to create keys manager.\n");
return(NULL);
}
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
fprintf(stderr, "Error: failed to initialize keys manager.\n");
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
for(i = 0; i < files_size; ++i) {
assert(files[i]);
/* load DES key */
key = xmlSecKeyReadBinaryFile(xmlSecKeyDataDesId, files[i]);
if(key == NULL) {
fprintf(stderr,"Error: failed to load des key from binary file \"%s\"\n", files[i]);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(key, BAD_CAST files[i]) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", files[i]);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* add key to keys manager, from now on keys manager is responsible
* for destroying key
*/
if(xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key) < 0) {
fprintf(stderr,"Error: failed to add key from \"%s\" to keys manager\n", files[i]);
xmlSecKeyDestroy(key);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
}
return(mngr);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-decrypt2">Full program listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-custom-keys-store">
<title>Implementing a custom keys store.</title>
<para>In many cases, a default built-in list based keys store
is not good enough. For example, XML Security Library (and
the built-in default keys store) have no synchronization and
you'll need to implement a custom keys store if you want to
add or remove keys while other threads use the store.</para>
<para>
<example>
<title>Creating a custom keys manager.</title>
<programlisting><![CDATA[
/**
* create_files_keys_mngr:
*
* Creates a files based keys manager: we assume that key name is
* the key file name,
*
* Returns pointer to newly created keys manager or NULL if an error occurs.
*/
xmlSecKeysMngrPtr
create_files_keys_mngr(void) {
xmlSecKeyStorePtr keysStore;
xmlSecKeysMngrPtr mngr;
/* create files based keys store */
keysStore = xmlSecKeyStoreCreate(files_keys_store_get_klass());
if(keysStore == NULL) {
fprintf(stderr, "Error: failed to create keys store.\n");
return(NULL);
}
/* create keys manager */
mngr = xmlSecKeysMngrCreate();
if(mngr == NULL) {
fprintf(stderr, "Error: failed to create keys manager.\n");
xmlSecKeyStoreDestroy(keysStore);
return(NULL);
}
/* add store to keys manager, from now on keys manager destroys the store if needed */
if(xmlSecKeysMngrAdoptKeysStore(mngr, keysStore) < 0) {
fprintf(stderr, "Error: failed to add keys store to keys manager.\n");
xmlSecKeyStoreDestroy(keysStore);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* initialize crypto library specific data in keys manager */
if(xmlSecCryptoKeysMngrInit(mngr) < 0) {
fprintf(stderr, "Error: failed to initialize crypto data in keys manager.\n");
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
/* set the get key callback */
mngr->getKey = xmlSecKeysMngrGetKey;
return(mngr);
}
/****************************************************************************
*
* Files Keys Store: we assume that key's name (content of the
* <dsig:KeyName/> element is a name of the file with a key.
* Attention: this probably not a good solution for high traffic systems.
*
***************************************************************************/
static xmlSecKeyPtr files_keys_store_find_key (xmlSecKeyStorePtr store,
const xmlChar* name,
xmlSecKeyInfoCtxPtr keyInfoCtx);
static xmlSecKeyStoreKlass files_keys_store_klass = {
sizeof(xmlSecKeyStoreKlass),
sizeof(xmlSecKeyStore),
BAD_CAST "files-based-keys-store", /* const xmlChar* name; */
NULL, /* xmlSecKeyStoreInitializeMethod initialize; */
NULL, /* xmlSecKeyStoreFinalizeMethod finalize; */
files_keys_store_find_key, /* xmlSecKeyStoreFindKeyMethod findKey; */
/* reserved for the future */
NULL, /* void* reserved0; */
NULL, /* void* reserved1; */
};
/**
* files_keys_store_get_klass:
*
* The files based keys store klass: we assume that key name is the
* key file name,
*
* Returns files based keys store klass.
*/
xmlSecKeyStoreId
files_keys_store_get_klass(void) {
return(&files_keys_store_klass);
}
/**
* files_keys_store_find_key:
* @store: the pointer to default keys store.
* @name: the desired key name.
* @keyInfoCtx: the pointer to <dsig:KeyInfo/> node processing context.
*
* Lookups key in the @store.
*
* Returns pointer to key or NULL if key not found or an error occurs.
*/
static xmlSecKeyPtr
files_keys_store_find_key(xmlSecKeyStorePtr store, const xmlChar* name, xmlSecKeyInfoCtxPtr keyInfoCtx) {
xmlSecKeyPtr key;
const xmlChar* p;
assert(store);
assert(keyInfoCtx);
/* it's possible to do not have the key name or desired key type
* but we could do nothing in this case */
if((name == NULL) || (keyInfoCtx->keyReq.keyId == xmlSecKeyDataIdUnknown)){
return(NULL);
}
/* we don't want to open files in a folder other than "current";
* to prevent it limit the characters in the key name to alpha/digit,
* '.', '-' or '_'.
*/
for(p = name; (*p) != '\0'; ++p) {
if(!isalnum((*p)) && ((*p) != '.') && ((*p) != '-') && ((*p) != '_')) {
return(NULL);
}
}
if((keyInfoCtx->keyReq.keyId == xmlSecKeyDataDsaId) || (keyInfoCtx->keyReq.keyId == xmlSecKeyDataRsaId)) {
/* load key from a pem file, if key is not found then it's an error (is it?) */
key = xmlSecCryptoAppKeyLoad(name, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(key == NULL) {
fprintf(stderr,"Error: failed to load pem key from \"%s\"\n", name);
return(NULL);
}
} else {
/* otherwise it's a binary key, if key is not found then it's an error (is it?) */
key = xmlSecKeyReadBinaryFile(keyInfoCtx->keyReq.keyId, name);
if(key == NULL) {
fprintf(stderr,"Error: failed to load key from binary file \"%s\"\n", name);
return(NULL);
}
}
/* set key name */
if(xmlSecKeySetName(key, name) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", name);
xmlSecKeyDestroy(key);
return(NULL);
}
return(key);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-decrypt3">Full program listing</link></simpara>
</example>
</para>
</sect1>
</chapter>

View File

@ -1,67 +0,0 @@
<chapter id="xmlsec-notes-transforms">
<title>Transforms and transforms chain.</title>
<para>XML Digital Signature and XML Encryption standards are
very flexible and provide an XML developer many different ways to
sign or encrypt any part (or even parts) of an XML document.
The key for such great flexibility is the "transforms" model.
Transform is defined as a method of pre-processing binary or XML data
before calculating digest or signature. XML Security Library extends
this definition and names "transform" any operation performed on
the data: reading data from an URI, xml parsing, xml transformation,
calculation digest, encrypting or decrypting. Each XML Security Library
transform provides at least one of the following callbacks:
<itemizedlist>
<listitem><para>
<link linkend="xmlSecTransformPushBinMethod">push binary data</link>;
</para></listitem>
<listitem><para>
<link linkend="xmlSecTransformPushXmlMethod">push xml data</link>;
</para></listitem>
<listitem><para>
<link linkend="xmlSecTransformPopBinMethod">pop binary data</link>;
</para></listitem>
<listitem><para>
<link linkend="xmlSecTransformPopXmlMethod">pop xml data</link>.
</para></listitem>
</itemizedlist>
</para>
<para>One additional <link linkend="xmlSecTransformExecuteMethod">execute</link>
callback was added to simplify the development and reduce code size.
This callback is used by default
implementations of the four external callbacks from the list above.
For example, most of the crypto transforms could be implemented by
just implementing one "execute" callback and using default push/pop
binary data callbacks. However, in some cases using push/pop callbacks
directly is more efficient.
</para>
<figure>
<title>The XML Security Library transform.</title>
<graphic fileref="images/transform.png" align="center"></graphic>
</figure>
<para>XML Security Library constructs transforms chain according to the
signature/encryption template or signed/encrypted document.
If necessary, XML Security Library inserts XML parser or defaul
canonicalization to ensure that the output data type (binary or XML)
of previous transform matches the input of the next transform.
</para>
<para>The data are processed by pushing through or poping from the chain
depending on the transforms in the chain. For example, then binary
data chunk is pushed through a binary-to-binary transform, it
processes this chunk and pushes the result to the next transform
in the chain.
</para>
<figure>
<title>Transforms chain created for &lt;dsig:Reference/&gt; element processing.</title>
<graphic fileref="images/transforms-chain.png" align="center"></graphic>
</figure>
<para>
<example>
<title>Walking through transforms chain.</title>
<programlisting><![CDATA[
TODO
]]></programlisting>
</example>
</para>
</chapter>

View File

@ -1,197 +0,0 @@
<chapter id="xmlsec-notes-x509">
<title>Using X509 Certificates.</title>
<sect1 id="xmlsec-notes-x509-overview">
<title>Overview.</title>
<para>X509 certificate is one of many possible keys data object that can be
associated with a key. Application may read and write X509 data
from/to XML file. The X509 certificates management policies significantly
vary from one crypto library to another. The examples in this chapter
were tested with OpenSSL and they might be broken if anither crypto
engine is used. Check API reference documentation for more specific
information about your crypto engine.
</para>
</sect1>
<sect1 id="xmlsec-notes-sign-x509" >
<title>Signing data with X509 certificate.</title>
<para>To sign a file using X509 certificate,
an application need to associate the certificate (or certificates)
with the private key using one of the following functions:
<itemizedlist>
<listitem><para>
<link linkend="xmlSecOpenSSLAppKeyCertLoad">xmlSecOpenSSLAppKeyCertLoad</link> - loads
certificate from a file and adds to the key;
</para></listitem>
<listitem><para>
<link linkend="xmlSecOpenSSLAppPkcs12Load">xmlSecOpenSSLAppPkcs12Load</link> -
loads private key and all the certificates associated with it from a PKCS12 file;
</para></listitem>
<listitem><para>
<link linkend="xmlSecKeyAdoptData">xmlSecKeyAdoptData</link> - low level
function to add key data (including X509 key data) to the key.
</para></listitem>
</itemizedlist>
<example>
<title>Loading private key and X509 certificate.</title>
<programlisting><![CDATA[
/* load private key, assuming that there is not password */
key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(key == NULL) {
fprintf(stderr,"Error: failed to load private pem key from \"%s\"\n", key_file);
goto done;
}
/* load certificate and add to the key */
if(xmlSecCryptoAppKeyCertLoad(key, cert_file, xmlSecKeyDataFormatPem) < 0) {
fprintf(stderr,"Error: failed to load pem certificate \"%s\"\n", cert_file);
goto done;
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-sign3">Full program listing</link></simpara>
</example>
</para>
<para>Next step is to prepare signature template with &lt;dsig:X509Data/&gt;
child of the &lt;dsig:KeyInfo/&gt; element. When XML Security Library finds
this node in the template, it automaticaly creates &lt;dsig:X509Certificate/&gt;
children of the &lt;dsig:X509Data/&gt; element and writes to result XML document
all the certificates associated with the signature key.
<example>
<title>Dynamicaly creating a signature template for signing document using X509 certificate.</title>
<programlisting><![CDATA[
/* create signature template for RSA-SHA1 enveloped signature */
signNode = xmlSecTmplSignatureCreate(doc, xmlSecTransformExclC14NId,
xmlSecTransformRsaSha1Id, NULL);
if(signNode == NULL) {
fprintf(stderr, "Error: failed to create signature template\n");
goto done;
}
/* add <dsig:Signature/> node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
refNode = xmlSecTmplSignatureAddReference(signNode, xmlSecTransformSha1Id,
NULL, NULL, NULL);
if(refNode == NULL) {
fprintf(stderr, "Error: failed to add reference to signature template\n");
goto done;
}
/* add enveloped transform */
if(xmlSecTmplReferenceAddTransform(refNode, xmlSecTransformEnvelopedId) == NULL) {
fprintf(stderr, "Error: failed to add enveloped transform to reference\n");
goto done;
}
/* add <dsig:KeyInfo/> and <dsig:X509Data/> */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
if(xmlSecTmplKeyInfoAddX509Data(keyInfoNode) == NULL) {
fprintf(stderr, "Error: failed to add X509Data node\n");
goto done;
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-sign3">Full program listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-verify-x509" >
<title>Verifing document signed with X509 certificates.</title>
<para>
If the document is signed with an X509 certificate then the signature
verification consist of two steps:
<itemizedlist>
<listitem><para>Creating and verifing X509 certificates chain.
</para></listitem>
<listitem><para>Verifing signature itself using key exrtacted from
a certificate verified on previous step.
</para></listitem>
</itemizedlist>
Certificates chain is constructed from certificates in a way that
each certificate in the chain is signed with previous one:
<figure>
<title>Certificates chain.</title>
<programlisting>
Certificate A (signed with B) <- Certificate B (signed with C) <- ... <- Root Certificate (signed by itself)
</programlisting>
</figure>
At the end of the chain there is a &quot;Root Certificate&quot; which
is signed by itself. There is no way to verify the validity of the
root certificate and application have to &quot;trust&quot; it
(another name for root certificates is &quot;trusted&quot; certificates).
</para>
<para>
Application can use <link linkend="xmlSecCryptoAppKeysMngrCertLoad">xmlSecCryptoAppKeysMngrCertLoad</link>
function to load both &quot;trusted&quot; and &quot;un-trusted&quot;
certificates. However, the selection of &quot;trusted&quot;
certificates is very sensitive process and this function might be
not implemented for some crypto engines. In this case, the
&quot;trusted&quot; certificates list is loaded during initialization
or specified in crypto engine configuration files.
Check XML Security Library API reference for more details.
<example>
<title>Loading trusted X509 certificate.</title>
<programlisting><![CDATA[
/**
* load_trusted_certs:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load trusted certificates from PEM #files.
* The caller is responsible for destroing returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
* occurs.
*/
xmlSecKeysMngrPtr
load_trusted_certs(char** files, int files_size) {
xmlSecKeysMngrPtr mngr;
int i;
assert(files);
assert(files_size > 0);
/* create and initialize keys manager, we use a simple list based
* keys manager, implement your own xmlSecKeysStore klass if you need
* something more sophisticated
*/
mngr = xmlSecKeysMngrCreate();
if(mngr == NULL) {
fprintf(stderr, "Error: failed to create keys manager.\n");
return(NULL);
}
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
fprintf(stderr, "Error: failed to initialize keys manager.\n");
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
for(i = 0; i < files_size; ++i) {
assert(files[i]);
/* load trusted cert */
if(xmlSecCryptoAppKeysMngrCertLoad(mngr, files[i], xmlSecKeyDataFormatPem, xmlSecKeyDataTypeTrusted) < 0) {
fprintf(stderr,"Error: failed to load pem certificate from \"%s\"\n", files[i]);
xmlSecKeysMngrDestroy(mngr);
return(NULL);
}
}
return(mngr);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-verify3">Full program listing</link></simpara>
</example>
</para>
</sect1>
</chapter>

View File

@ -1,265 +0,0 @@
<chapter id="xmlsec-notes-verify-decrypt">
<title>Verifing and decrypting documents.</title>
<sect1 id="xmlsec-notes-verify-decrypt-overview">
<title>Overview.</title>
<para>Since the template is just an XML file, it might be created in advance
and saved in a file. It's also possible for application to create
templates without using XML Security Library functions. Also in some
cases template should be inserted in the signed or encrypted data
(for example, if you want to create an enveloped or enveloping
signature).</para>
<para>Signature verification and data decryption do not require template
because all the necessary information is provided in the signed or
encrypted document.
<figure>
<title>The verification or decryption processing model.</title>
<graphic fileref="images/verif-dec-model.png" align="center"></graphic>
</figure>
</para>
</sect1>
<sect1 id="xmlsec-notes-verify" >
<title>Verifying a signed document</title>
<para>The typical signature verification process includes following steps:
<itemizedlist>
<listitem><para>
Load keys, X509 certificates, etc. in the <link linkend="xmlSecKeysMngr">keys manager</link> .
</para></listitem>
<listitem><para>
Create signature context <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
using <link linkend="xmlSecDSigCtxCreate">xmlSecDSigCtxCreate</link> or
<link linkend="xmlSecDSigCtxInitialize">xmlSecDSigCtxInitialize</link>
functions.
</para></listitem>
<listitem><para>
Select start verification
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature">&lt;dsig:Signature/&gt;</ulink>
node in the signed XML document.
</para></listitem>
<listitem><para>
Verify signature by calling <link linkend="xmlSecDSigCtxVerify">xmlSecDSigCtxVerify</link>
function.
</para></listitem>
<listitem><para>
Check returned value and verification status (<structfield>status</structfield>
member of <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link> structure).
If necessary, consume returned data from the <link linkend="xmlSecDSigCtx">context</link>.
</para></listitem>
<listitem><para>
Destroy signature context <link linkend="xmlSecDSigCtx">xmlSecDSigCtx</link>
using <link linkend="xmlSecDSigCtxDestroy">xmlSecDSigCtxDestroy</link> or
<link linkend="xmlSecDSigCtxFinalize">xmlSecDSigCtxFinalize</link>
functions.
</para></listitem>
</itemizedlist>
</para>
<para>
<example>
<title>Verifying a document.</title>
<programlisting><![CDATA[
/**
* verify_file:
* @xml_file: the signed XML file name.
* @key_file: the PEM public key file name.
*
* Verifies XML signature in #xml_file using public key from #key_file.
*
* Returns 0 on success or a negative value if an error occurs.
*/
int
verify_file(const char* xml_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
assert(xml_file);
assert(key_file);
/* load file */
doc = xmlParseFile(xml_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_file);
goto done;
}
/* find start node */
node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeSignature, xmlSecDSigNs);
if(node == NULL) {
fprintf(stderr, "Error: start node not found in \"%s\"\n", xml_file);
goto done;
}
/* create signature context, we don't need keys manager in this example */
dsigCtx = xmlSecDSigCtxCreate(NULL);
if(dsigCtx == NULL) {
fprintf(stderr,"Error: failed to create signature context\n");
goto done;
}
/* load public key */
dsigCtx->signKey = xmlSecCryptoAppKeyLoad(key_file,xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(dsigCtx->signKey == NULL) {
fprintf(stderr,"Error: failed to load public pem key from \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(dsigCtx->signKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* Verify signature */
if(xmlSecDSigCtxVerify(dsigCtx, node) < 0) {
fprintf(stderr,"Error: signature verify\n");
goto done;
}
/* print verification result to stdout */
if(dsigCtx->status == xmlSecDSigStatusSucceeded) {
fprintf(stdout, "Signature is OK\n");
} else {
fprintf(stdout, "Signature is INVALID\n");
}
/* success */
res = 0;
done:
/* cleanup */
if(dsigCtx != NULL) {
xmlSecDSigCtxDestroy(dsigCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-verify1">Full Program Listing</link></simpara>
</example>
</para>
</sect1>
<sect1 id="xmlsec-notes-decrypt" >
<title>Decrypting an encrypted document</title>
<para>The typical decryption process includes following steps:
<itemizedlist>
<listitem><para>
Load keys, X509 certificates, etc. in the <link linkend="xmlSecKeysMngr">keys manager</link> .
</para></listitem>
<listitem><para>
Create encryption context <link linkend="xmlSecEncCtx">xmlSecEncCtx</link>
using <link linkend="xmlSecEncCtxCreate">xmlSecEncCtxCreate</link> or
<link linkend="xmlSecEncCtxInitialize">xmlSecEncCtxInitialize</link>
functions.
</para></listitem>
<listitem><para>
Select start decryption &lt;enc:EncryptedData&gt; node.
</para></listitem>
<listitem><para>
Decrypt by calling <link linkend="xmlSecEncCtxDecrypt">xmlSecencCtxDecrypt</link>
function.
</para></listitem>
<listitem><para>
Check returned value and if necessary consume encrypted data.
</para></listitem>
<listitem><para>
Destroy encryption context <link linkend="xmlSecEncCtx">xmlSecEncCtx</link>
using <link linkend="xmlSecEncCtxDestroy">xmlSecEncCtxDestroy</link> or
<link linkend="xmlSecEncCtxFinalize">xmlSecEncCtxFinalize</link>
functions.
</para></listitem>
</itemizedlist>
</para>
<para>
<example>
<title>Decrypting a document.</title>
<programlisting><![CDATA[
int
decrypt_file(const char* enc_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
xmlSecEncCtxPtr encCtx = NULL;
int res = -1;
assert(enc_file);
assert(key_file);
/* load template */
doc = xmlParseFile(enc_file);
if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
fprintf(stderr, "Error: unable to parse file \"%s\"\n", enc_file);
goto done;
}
/* find start node */
node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeEncryptedData, xmlSecEncNs);
if(node == NULL) {
fprintf(stderr, "Error: start node not found in \"%s\"\n", enc_file);
goto done;
}
/* create encryption context, we don't need keys manager in this example */
encCtx = xmlSecEncCtxCreate(NULL);
if(encCtx == NULL) {
fprintf(stderr,"Error: failed to create encryption context\n");
goto done;
}
/* load DES key */
encCtx->encKey = xmlSecKeyReadBinaryFile(xmlSecKeyDataDesId, key_file);
if(encCtx->encKey == NULL) {
fprintf(stderr,"Error: failed to load des key from binary file \"%s\"\n", key_file);
goto done;
}
/* set key name to the file name, this is just an example! */
if(xmlSecKeySetName(encCtx->encKey, key_file) < 0) {
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
goto done;
}
/* decrypt the data */
if((xmlSecEncCtxDecrypt(encCtx, node) < 0) || (encCtx->result == NULL)) {
fprintf(stderr,"Error: decryption failed\n");
goto done;
}
/* print decrypted data to stdout */
if(encCtx->resultReplaced != 0) {
fprintf(stdout, "Decrypted XML data:\n");
xmlDocDump(stdout, doc);
} else {
fprintf(stdout, "Decrypted binary data (%d bytes):\n", xmlSecBufferGetSize(encCtx->result));
if(xmlSecBufferGetData(encCtx->result) != NULL) {
fwrite(xmlSecBufferGetData(encCtx->result),
1,
xmlSecBufferGetSize(encCtx->result),
stdout);
}
}
fprintf(stdout, "\n");
/* success */
res = 0;
done:
/* cleanup */
if(encCtx != NULL) {
xmlSecEncCtxDestroy(encCtx);
}
if(doc != NULL) {
xmlFreeDoc(doc);
}
return(res);
}
]]></programlisting>
<simpara><link linkend="xmlsec-example-decrypt1">Full Program Listing</link></simpara>
</example>
</para>
</sect1>
</chapter>

View File

@ -1,307 +0,0 @@
<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
<!ENTITY chapter-compiling-and-linking SYSTEM "chapters/compiling-and-linking.sgml">
<!ENTITY chapter-init-and-shutdown SYSTEM "chapters/init-and-shutdown.sgml">
<!ENTITY chapter-sign-and-encrypt SYSTEM "chapters/sign-and-encrypt.sgml">
<!ENTITY chapter-verify-and-decrypt SYSTEM "chapters/verify-and-decrypt.sgml">
<!ENTITY chapter-creating-templates SYSTEM "chapters/creating-templates.sgml">
<!ENTITY chapter-using-keys SYSTEM "chapters/using-keys.sgml">
<!ENTITY chapter-using-keysmngr SYSTEM "chapters/using-keysmngr.sgml">
<!ENTITY chapter-using-x509-certs SYSTEM "chapters/using-x509-certs.sgml">
<!ENTITY chapter-using-transforms SYSTEM "chapters/using-transforms.sgml">
<!ENTITY chapter-using-contexts SYSTEM "chapters/using-contexts.sgml">
<!ENTITY chapter-new-crypto SYSTEM "chapters/new-crypto.sgml">
<!ENTITY chapter-examples SYSTEM "chapters/examples.sgml">
<!ENTITY xmlsec-index SYSTEM "xmlsec-index.sgml">
<!ENTITY xmlsec-app SYSTEM "app.sgml">
<!ENTITY xmlsec-base64 SYSTEM "base64.sgml">
<!ENTITY xmlsec-bn SYSTEM "bn.sgml">
<!ENTITY xmlsec-buffer SYSTEM "buffer.sgml">
<!ENTITY xmlsec-dl SYSTEM "dl.sgml">
<!ENTITY xmlsec-errors SYSTEM "errors.sgml">
<!ENTITY xmlsec-io SYSTEM "io.sgml">
<!ENTITY xmlsec-keyinfo SYSTEM "keyinfo.sgml">
<!ENTITY xmlsec-keysdata SYSTEM "keysdata.sgml">
<!ENTITY xmlsec-keys SYSTEM "keys.sgml">
<!ENTITY xmlsec-keysmngr SYSTEM "keysmngr.sgml">
<!ENTITY xmlsec-list SYSTEM "list.sgml">
<!ENTITY xmlsec-membuf SYSTEM "membuf.sgml">
<!ENTITY xmlsec-nodeset SYSTEM "nodeset.sgml">
<!ENTITY xmlsec-parser SYSTEM "parser.sgml">
<!ENTITY xmlsec-templates SYSTEM "templates.sgml">
<!ENTITY xmlsec-transforms SYSTEM "transforms.sgml">
<!ENTITY xmlsec-version SYSTEM "version.sgml">
<!ENTITY xmlsec-xmldsig SYSTEM "xmldsig.sgml">
<!ENTITY xmlsec-xmlenc SYSTEM "xmlenc.sgml">
<!ENTITY xmlsec-xmlsec SYSTEM "xmlsec.sgml">
<!ENTITY xmlsec-xmltree SYSTEM "xmltree.sgml">
<!ENTITY xmlsec-x509 SYSTEM "x509.sgml">
<!ENTITY xmlsec-openssl-app SYSTEM "openssl/app.sgml">
<!ENTITY xmlsec-openssl-bn SYSTEM "openssl/bn.sgml">
<!ENTITY xmlsec-openssl-ciphers SYSTEM "openssl/ciphers.sgml">
<!ENTITY xmlsec-openssl-crypto SYSTEM "openssl/crypto.sgml">
<!ENTITY xmlsec-openssl-evp SYSTEM "openssl/evp.sgml">
<!ENTITY xmlsec-openssl-x509 SYSTEM "openssl/x509.sgml">
<!ENTITY xmlsec-gnutls-app SYSTEM "gnutls/app.sgml">
<!ENTITY xmlsec-gnutls-crypto SYSTEM "gnutls/crypto.sgml">
<!ENTITY xmlsec-gcrypt-app SYSTEM "gcrypt/app.sgml">
<!ENTITY xmlsec-gcrypt-crypto SYSTEM "gcrypt/crypto.sgml">
<!ENTITY xmlsec-nss-app SYSTEM "nss/app.sgml">
<!ENTITY xmlsec-nss-bignum SYSTEM "nss/bignum.sgml">
<!ENTITY xmlsec-nss-crypto SYSTEM "nss/crypto.sgml">
<!ENTITY xmlsec-nss-keysstore SYSTEM "nss/keysstore.sgml">
<!ENTITY xmlsec-nss-pkikeys SYSTEM "nss/pkikeys.sgml">
<!ENTITY xmlsec-nss-x509 SYSTEM "nss/x509.sgml">
<!ENTITY xmlsec-mscrypto-app SYSTEM "mscrypto/app.sgml">
<!ENTITY xmlsec-mscrypto-certkeys SYSTEM "mscrypto/certkeys.sgml">
<!ENTITY xmlsec-mscrypto-crypto SYSTEM "mscrypto/crypto.sgml">
<!ENTITY xmlsec-mscrypto-keysstore SYSTEM "mscrypto/keysstore.sgml">
<!ENTITY xmlsec-mscrypto-x509 SYSTEM "mscrypto/x509.sgml">
<!ENTITY xmlsec-example-sign1 SYSTEM "examples/sign1.sgml">
<!ENTITY xmlsec-example-sign2 SYSTEM "examples/sign2.sgml">
<!ENTITY xmlsec-example-sign3 SYSTEM "examples/sign3.sgml">
<!ENTITY xmlsec-example-verify1 SYSTEM "examples/verify1.sgml">
<!ENTITY xmlsec-example-verify2 SYSTEM "examples/verify2.sgml">
<!ENTITY xmlsec-example-verify3 SYSTEM "examples/verify3.sgml">
<!ENTITY xmlsec-example-verify4 SYSTEM "examples/verify4.sgml">
<!ENTITY xmlsec-example-encrypt1 SYSTEM "examples/encrypt1.sgml">
<!ENTITY xmlsec-example-encrypt2 SYSTEM "examples/encrypt2.sgml">
<!ENTITY xmlsec-example-encrypt3 SYSTEM "examples/encrypt3.sgml">
<!ENTITY xmlsec-example-decrypt1 SYSTEM "examples/decrypt1.sgml">
<!ENTITY xmlsec-example-decrypt2 SYSTEM "examples/decrypt2.sgml">
<!ENTITY xmlsec-example-decrypt3 SYSTEM "examples/decrypt3.sgml">
<!ENTITY xmlsec-example-sign1-tmpl SYSTEM "examples/sign1-tmpl.sgml">
<!ENTITY xmlsec-example-sign1-res SYSTEM "examples/sign1-res.sgml">
<!ENTITY xmlsec-example-sign2-doc SYSTEM "examples/sign2-doc.sgml">
<!ENTITY xmlsec-example-sign2-res SYSTEM "examples/sign2-res.sgml">
<!ENTITY xmlsec-example-sign3-doc SYSTEM "examples/sign3-doc.sgml">
<!ENTITY xmlsec-example-sign3-res SYSTEM "examples/sign3-res.sgml">
<!ENTITY xmlsec-example-verify4-res SYSTEM "examples/verify4-res.sgml">
<!ENTITY xmlsec-example-verify4-tmpl SYSTEM "examples/verify4-tmpl.sgml">
<!ENTITY xmlsec-example-verify4-bad-res SYSTEM "examples/verify4-bad-res.sgml">
<!ENTITY xmlsec-example-verify4-bad-tmpl SYSTEM "examples/verify4-bad-tmpl.sgml">
<!ENTITY xmlsec-example-encrypt1-tmpl SYSTEM "examples/encrypt1-tmpl.sgml">
<!ENTITY xmlsec-example-encrypt1-res SYSTEM "examples/encrypt1-res.sgml">
<!ENTITY xmlsec-example-encrypt2-doc SYSTEM "examples/encrypt2-doc.sgml">
<!ENTITY xmlsec-example-encrypt2-res SYSTEM "examples/encrypt2-res.sgml">
<!ENTITY xmlsec-example-encrypt3-doc SYSTEM "examples/encrypt3-doc.sgml">
<!ENTITY xmlsec-example-encrypt3-res SYSTEM "examples/encrypt3-res.sgml">
]>
<book id="index">
<bookinfo>
<title>XML Security Library Reference Manual</title>
<authorgroup>
<author>
<firstname>Aleksey</firstname>
<surname>Sanin</surname>
<affiliation>
<address>
<email>aleksey@aleksey.com</email>
</address>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>2002-2003</year>
<holder>Aleksey Sanin</holder>
</copyright>
<legalnotice>
<para>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
permission notice are preserved on all copies.</para>
<para>Permission is granted to copy and distribute modified
versions of this manual under the conditions for verbatim
copying, provided also that the entire resulting derived work is
distributed under the terms of a permission notice identical to
this one.</para>
<para>Permission is granted to copy and distribute translations
of this manual into another language, under the above conditions
for modified versions.</para>
</legalnotice>
<abstract>
<para>This manual documents the interfaces of the xmlsec
library and has some short notes to help get you up to speed
with using the library.</para>
</abstract>
</bookinfo>
<part id="xmlsec-notes">
<title>XML Security Library Tutorial</title>
<chapter id="xmlsec-notes-overview">
<title>Overview.</title>
<para>XML Security Library provides support for XML Digital Signature
and XML Encryption. It is based on LibXML/LibXSLT and can use
practicaly any crypto library (currently there is "out of the box"
support for OpenSSL, MSCrypto, GnuTLS, GCrypt and NSS).
</para>
</chapter>
<chapter id="xmlsec-notes-structure">
<title>XML Security Library Structure.</title>
<para>In order to provide the an ability to use different crypto engines,
the XML Security Library is splitted in two parts: core library (xmlsec)
and crypto library (xmlsec-openssl, xmlsec-mscrypt, xmlsec-gnutls,
xmlsec-gcrypt, xmlsec-nss, ...).
<figure>
<title>The library structure and dependencies.</title>
<graphic fileref="images/structure.png" align="center"></graphic>
</figure>
</para>
<para>The core library has no dependency on any crypto library and provides
implementation of all the engines as well as support for all the non
crypto transforms (xml parser, c14n transforms, xpath and xslt
transforms,...). The XML Security Crypto library provides
implementations for crypto transforms, crypto keys data and key
data stores. Application is linked with particular XML Security
Crypto library (or even libraries), but the actual application
code might be general enough so switching crypto engine would be
a matter of changing several #include directives.</para>
</chapter>
&chapter-compiling-and-linking;
&chapter-init-and-shutdown;
&chapter-sign-and-encrypt;
&chapter-creating-templates;
&chapter-verify-and-decrypt;
&chapter-using-keys;
&chapter-using-keysmngr;
&chapter-using-x509-certs;
&chapter-using-transforms;
&chapter-using-contexts;
&chapter-new-crypto;
&chapter-examples;
<chapter id="xmlsec-signature-klasses">
<title>APPENDIX A. XML Security Library Signature Klasses.</title>
<figure>
<title>XML Security Library Signature Klasses.</title>
<graphic fileref="images/signature-structure.png" align="center"></graphic>
</figure>
</chapter>
<chapter id="xmlsec-encryption-klasses">
<title>APPENDIX B. XML Security Library Encryption Klasses.</title>
<figure>
<title>XML Security Library Encryption Klasses.</title>
<graphic fileref="images/encryption-structure.png" align="center"></graphic>
</figure>
</chapter>
</part>
<part id="xmlsec-reference">
<title>XML Security Library API Reference.</title>
<chapter id="xmlsec-ref">
<title>XML Security Core Library API Reference.</title>
<para>This section contains the API reference for xmlsec. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-app;
&xmlsec-base64;
&xmlsec-bn;
&xmlsec-buffer;
&xmlsec-dl;
&xmlsec-errors;
&xmlsec-io;
&xmlsec-keyinfo;
&xmlsec-keysdata;
&xmlsec-keys;
&xmlsec-keysmngr;
&xmlsec-list;
&xmlsec-membuf;
&xmlsec-nodeset;
&xmlsec-parser;
&xmlsec-templates;
&xmlsec-transforms;
&xmlsec-version;
&xmlsec-xmldsig;
&xmlsec-xmlenc;
&xmlsec-xmlsec;
&xmlsec-xmltree;
&xmlsec-x509;
</chapter>
<chapter id="xmlsec-openssl-ref">
<title>XML Security Library for OpenSLL API Reference.</title>
<para>This section contains the API reference for xmlsec-openssl. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-openssl-app;
&xmlsec-openssl-bn;
&xmlsec-openssl-crypto;
&xmlsec-openssl-evp;
&xmlsec-openssl-x509;
</chapter>
<chapter id="xmlsec-gnutls-ref">
<title>XML Security Library for GnuTLS API Reference.</title>
<para>This section contains the API reference for xmlsec-gnutls. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-gnutls-app;
&xmlsec-gnutls-crypto;
</chapter>
<chapter id="xmlsec-gcrypt-ref">
<title>XML Security Library for GCrypt API Reference.</title>
<para>This section contains the API reference for xmlsec-gcrypt. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-gcrypt-app;
&xmlsec-gcrypt-crypto;
</chapter>
<chapter id="xmlsec-nss-ref">
<title>XML Security Library for NSS API Reference.</title>
<para>This section contains the API reference for xmlsec-nss. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-nss-app;
&xmlsec-nss-bignum;
&xmlsec-nss-crypto;
&xmlsec-nss-keysstore;
&xmlsec-nss-pkikeys;
&xmlsec-nss-x509;
</chapter>
<chapter id="xmlsec-mscrypto-ref">
<title>XML Security Library for MSCrypto API Reference.</title>
<para>This section contains the API reference for xmlsec-mscrypto. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
&xmlsec-mscrypto-app;
&xmlsec-mscrypto-certkeys;
&xmlsec-mscrypto-crypto;
&xmlsec-mscrypto-keysstore;
&xmlsec-mscrypto-x509;
</chapter>
<chapter id="xmlsec-index">
<title>XML Security Library Reference Index</title>
<para>
<itemizedlist>
&xmlsec-index;
</itemizedlist>
</para>
</chapter>
</part>
</book>

File diff suppressed because it is too large Load Diff

View File

@ -1,129 +0,0 @@
<!-- ##### SECTION Title ##### -->
base64
<!-- ##### SECTION Short_Description ##### -->
Base64 encoding/decoding functions.
<!-- ##### SECTION Long_Description ##### -->
<para>
Base64 encoding/decoding functions.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO XMLSEC_BASE64_LINESIZE ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecBase64GetDefaultLineSize ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecBase64SetDefaultLineSize ##### -->
<para>
</para>
@columns:
<!-- ##### FUNCTION xmlSecBase64CtxCreate ##### -->
<para>
</para>
@encode:
@columns:
@Returns:
<!-- ##### FUNCTION xmlSecBase64CtxDestroy ##### -->
<para>
</para>
@ctx:
<!-- ##### FUNCTION xmlSecBase64CtxInitialize ##### -->
<para>
</para>
@ctx:
@encode:
@columns:
@Returns:
<!-- ##### FUNCTION xmlSecBase64CtxFinalize ##### -->
<para>
</para>
@ctx:
<!-- ##### FUNCTION xmlSecBase64CtxUpdate ##### -->
<para>
</para>
@ctx:
@in:
@inSize:
@out:
@outSize:
@Returns:
<!-- ##### FUNCTION xmlSecBase64CtxFinal ##### -->
<para>
</para>
@ctx:
@out:
@outSize:
@Returns:
<!-- ##### FUNCTION xmlSecBase64Encode ##### -->
<para>
</para>
@buf:
@len:
@columns:
@Returns:
<!-- ##### FUNCTION xmlSecBase64Decode ##### -->
<para>
</para>
@str:
@buf:
@len:
@Returns:

View File

@ -1,263 +0,0 @@
<!-- ##### SECTION Title ##### -->
bn
<!-- ##### SECTION Short_Description ##### -->
Big numbers support functions.
<!-- ##### SECTION Long_Description ##### -->
<para>
Big numbers support functions.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### ENUM xmlSecBnFormat ##### -->
<para>
</para>
@xmlSecBnBase64:
@xmlSecBnHex:
@xmlSecBnDec:
<!-- ##### FUNCTION xmlSecBnCreate ##### -->
<para>
</para>
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBnDestroy ##### -->
<para>
</para>
@bn:
<!-- ##### FUNCTION xmlSecBnInitialize ##### -->
<para>
</para>
@bn:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBnFinalize ##### -->
<para>
</para>
@bn:
<!-- ##### FUNCTION xmlSecBnGetData ##### -->
<para>
</para>
@bn:
@Returns:
<!-- ##### FUNCTION xmlSecBnSetData ##### -->
<para>
</para>
@bn:
@data:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBnGetSize ##### -->
<para>
</para>
@bn:
@Returns:
<!-- ##### FUNCTION xmlSecBnZero ##### -->
<para>
</para>
@bn:
<!-- ##### FUNCTION xmlSecBnFromString ##### -->
<para>
</para>
@bn:
@str:
@base:
@Returns:
<!-- ##### FUNCTION xmlSecBnToString ##### -->
<para>
</para>
@bn:
@base:
@Returns:
<!-- ##### FUNCTION xmlSecBnFromHexString ##### -->
<para>
</para>
@bn:
@str:
@Returns:
<!-- ##### FUNCTION xmlSecBnToHexString ##### -->
<para>
</para>
@bn:
@Returns:
<!-- ##### FUNCTION xmlSecBnFromDecString ##### -->
<para>
</para>
@bn:
@str:
@Returns:
<!-- ##### FUNCTION xmlSecBnToDecString ##### -->
<para>
</para>
@bn:
@Returns:
<!-- ##### FUNCTION xmlSecBnMul ##### -->
<para>
</para>
@bn:
@multiplier:
@Returns:
<!-- ##### FUNCTION xmlSecBnDiv ##### -->
<para>
</para>
@bn:
@divider:
@mod:
@Returns:
<!-- ##### FUNCTION xmlSecBnAdd ##### -->
<para>
</para>
@bn:
@delta:
@Returns:
<!-- ##### FUNCTION xmlSecBnReverse ##### -->
<para>
</para>
@bn:
@Returns:
<!-- ##### FUNCTION xmlSecBnCompare ##### -->
<para>
</para>
@bn:
@data:
@dataSize:
@Returns:
<!-- ##### FUNCTION xmlSecBnCompareReverse ##### -->
<para>
</para>
@bn:
@data:
@dataSize:
@Returns:
<!-- ##### FUNCTION xmlSecBnGetNodeValue ##### -->
<para>
</para>
@bn:
@cur:
@format:
@reverse:
@Returns:
<!-- ##### FUNCTION xmlSecBnSetNodeValue ##### -->
<para>
</para>
@bn:
@cur:
@format:
@reverse:
@addLineBreaks:
@Returns:
<!-- ##### FUNCTION xmlSecBnBlobSetNodeValue ##### -->
<para>
</para>
@data:
@dataSize:
@cur:
@format:
@reverse:
@addLineBreaks:
@Returns:

View File

@ -1,232 +0,0 @@
<!-- ##### SECTION Title ##### -->
buffer
<!-- ##### SECTION Short_Description ##### -->
Binary buffer implementation.
<!-- ##### SECTION Long_Description ##### -->
<para>
Binary buffer implementation.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### ENUM xmlSecAllocMode ##### -->
<para>
</para>
@xmlSecAllocModeExact:
@xmlSecAllocModeDouble:
<!-- ##### STRUCT xmlSecBuffer ##### -->
<para>
</para>
@data:
@size:
@maxSize:
@allocMode:
<!-- ##### FUNCTION xmlSecBufferSetDefaultAllocMode ##### -->
<para>
</para>
@defAllocMode:
@defInitialSize:
<!-- ##### FUNCTION xmlSecBufferCreate ##### -->
<para>
</para>
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferDestroy ##### -->
<para>
</para>
@buf:
<!-- ##### FUNCTION xmlSecBufferInitialize ##### -->
<para>
</para>
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferFinalize ##### -->
<para>
</para>
@buf:
<!-- ##### FUNCTION xmlSecBufferGetData ##### -->
<para>
</para>
@buf:
@Returns:
<!-- ##### FUNCTION xmlSecBufferSetData ##### -->
<para>
</para>
@buf:
@data:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferGetSize ##### -->
<para>
</para>
@buf:
@Returns:
<!-- ##### FUNCTION xmlSecBufferSetSize ##### -->
<para>
</para>
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferGetMaxSize ##### -->
<para>
</para>
@buf:
@Returns:
<!-- ##### FUNCTION xmlSecBufferSetMaxSize ##### -->
<para>
</para>
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferEmpty ##### -->
<para>
</para>
@buf:
<!-- ##### FUNCTION xmlSecBufferAppend ##### -->
<para>
</para>
@buf:
@data:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferPrepend ##### -->
<para>
</para>
@buf:
@data:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferRemoveHead ##### -->
<para>
</para>
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferRemoveTail ##### -->
<para>
</para>
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecBufferReadFile ##### -->
<para>
</para>
@buf:
@filename:
@Returns:
<!-- ##### FUNCTION xmlSecBufferBase64NodeContentRead ##### -->
<para>
</para>
@buf:
@node:
@Returns:
<!-- ##### FUNCTION xmlSecBufferBase64NodeContentWrite ##### -->
<para>
</para>
@buf:
@node:
@columns:
@Returns:
<!-- ##### FUNCTION xmlSecBufferCreateOutputBuffer ##### -->
<para>
</para>
@buf:
@Returns:

View File

@ -1,94 +0,0 @@
<!-- ##### SECTION Title ##### -->
dl
<!-- ##### SECTION Short_Description ##### -->
Dynamic crypto-engine library loading support.
<!-- ##### SECTION Long_Description ##### -->
<para>
Dynamic crypto-engine library loading support.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ##### -->
<para>
</para>
@functions:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLInit ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLShutdown ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLLoadLibrary ##### -->
<para>
</para>
@crypto:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLGetLibraryFunctions ##### -->
<para>
</para>
@crypto:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLUnloadLibrary ##### -->
<para>
</para>
@crypto:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLSetFunctions ##### -->
<para>
</para>
@functions:
@Returns:
<!-- ##### FUNCTION xmlSecCryptoDLGetFunctions ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,490 +0,0 @@
<!-- ##### SECTION Title ##### -->
errors
<!-- ##### SECTION Short_Description ##### -->
Error/log messages support.
<!-- ##### SECTION Long_Description ##### -->
<para>
Error/log messages support.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO XMLSEC_ERRORS_R_XMLSEC_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_MALLOC_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_STRDUP_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CRYPTO_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_XML_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_XSLT_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_IO_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_DISABLED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_NOT_IMPLEMENTED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_SIZE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_DATA ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_RESULT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TYPE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_OPERATION ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_STATUS ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_FORMAT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_DATA_NOT_MATCH ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE_CONTENT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_UNEXPECTED_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_NODE_NOT_FOUND ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TRANSFORM ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_URI_TYPE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_TRANSFORM_DISABLED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_KEY_DATA ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_NOT_FOUND ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_KEYDATA_DISABLED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_VERIFY_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_NOT_FOUND ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_REVOKED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_ISSUER_FAILED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_NOT_YET_VALID ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_HAS_EXPIRED ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_DSIG_NO_REFERENCES ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_R_ASSERTION ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_ERRORS_MAX_NUMBER ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION xmlSecErrorsCallback ##### -->
<para>
</para>
@file:
@line:
@func:
@errorObject:
@errorSubject:
@reason:
@msg:
<!-- ##### FUNCTION xmlSecErrorsInit ##### -->
<para>
</para>
@void:
<!-- ##### FUNCTION xmlSecErrorsShutdown ##### -->
<para>
</para>
@void:
<!-- ##### FUNCTION xmlSecErrorsSetCallback ##### -->
<para>
</para>
@callback:
<!-- ##### FUNCTION xmlSecErrorsDefaultCallback ##### -->
<para>
</para>
@file:
@line:
@func:
@errorObject:
@errorSubject:
@reason:
@msg:
<!-- ##### FUNCTION xmlSecErrorsDefaultCallbackEnableOutput ##### -->
<para>
</para>
@enabled:
<!-- ##### FUNCTION xmlSecErrorsGetCode ##### -->
<para>
</para>
@pos:
@Returns:
<!-- ##### FUNCTION xmlSecErrorsGetMsg ##### -->
<para>
</para>
@pos:
@Returns:
<!-- ##### MACRO XMLSEC_ERRORS_HERE ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecErrorsSafeString ##### -->
<para>
</para>
@str:
<!-- ##### MACRO XMLSEC_ERRORS_NO_MESSAGE ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecError ##### -->
<para>
</para>
@file:
@line:
@func:
@errorObject:
@errorSubject:
@reason:
@msg:
@...:
<!-- ##### MACRO xmlSecAssert ##### -->
<para>
</para>
@p:
<!-- ##### MACRO xmlSecAssert2 ##### -->
<para>
</para>
@p:
@ret:

View File

@ -1,29 +0,0 @@
<!-- ##### SECTION Title ##### -->
exports
<!-- ##### SECTION Short_Description ##### -->
Black magic to export functions on Windows.
<!-- ##### SECTION Long_Description ##### -->
<para>
Black magic to export functions on Windows.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO extern ##### -->
<para>
</para>

View File

@ -1,103 +0,0 @@
<!-- ##### SECTION Title ##### -->
io
<!-- ##### SECTION Short_Description ##### -->
Input/output support.
<!-- ##### SECTION Long_Description ##### -->
<para>
Input/output support.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecIOInit ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecIOShutdown ##### -->
<para>
</para>
@void:
<!-- ##### FUNCTION xmlSecIOCleanupCallbacks ##### -->
<para>
</para>
@void:
<!-- ##### FUNCTION xmlSecIORegisterDefaultCallbacks ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecIORegisterCallbacks ##### -->
<para>
</para>
@matchFunc:
@openFunc:
@readFunc:
@closeFunc:
@Returns:
<!-- ##### MACRO xmlSecTransformInputURIId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecTransformInputURIGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecTransformInputURIOpen ##### -->
<para>
</para>
@transform:
@uri:
@Returns:
<!-- ##### FUNCTION xmlSecTransformInputURIClose ##### -->
<para>
</para>
@transform:
@Returns:

View File

@ -1,312 +0,0 @@
<!-- ##### SECTION Title ##### -->
keyinfo
<!-- ##### SECTION Short_Description ##### -->
&lt;dsig:KeyInfo/&gt; node parser.
<!-- ##### SECTION Long_Description ##### -->
<para>
&lt;dsig:KeyInfo/&gt; node parser.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecKeyInfoNodeRead ##### -->
<para>
</para>
@keyInfoNode:
@key:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyInfoNodeWrite ##### -->
<para>
</para>
@keyInfoNode:
@key:
@keyInfoCtx:
@Returns:
<!-- ##### ENUM xmlSecKeyInfoMode ##### -->
<para>
</para>
@xmlSecKeyInfoModeRead:
@xmlSecKeyInfoModeWrite:
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS ##### -->
<para>
</para>
<!-- ##### STRUCT xmlSecKeyInfoCtx ##### -->
<para>
</para>
@userData:
@flags:
@flags2:
@keysMngr:
@mode:
@enabledKeyData:
@base64LineSize:
@retrievalMethodCtx:
@maxRetrievalMethodLevel:
@encCtx:
@maxEncryptedKeyLevel:
@certsVerificationTime:
@certsVerificationDepth:
@pgpReserved:
@curRetrievalMethodLevel:
@curEncryptedKeyLevel:
@keyReq:
@reserved0:
@reserved1:
<!-- ##### FUNCTION xmlSecKeyInfoCtxCreate ##### -->
<para>
</para>
@keysMngr:
@Returns:
<!-- ##### FUNCTION xmlSecKeyInfoCtxDestroy ##### -->
<para>
</para>
@keyInfoCtx:
<!-- ##### FUNCTION xmlSecKeyInfoCtxInitialize ##### -->
<para>
</para>
@keyInfoCtx:
@keysMngr:
@Returns:
<!-- ##### FUNCTION xmlSecKeyInfoCtxFinalize ##### -->
<para>
</para>
@keyInfoCtx:
<!-- ##### FUNCTION xmlSecKeyInfoCtxReset ##### -->
<para>
</para>
@keyInfoCtx:
<!-- ##### FUNCTION xmlSecKeyInfoCtxCopyUserPref ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### FUNCTION xmlSecKeyInfoCtxCreateEncCtx ##### -->
<para>
</para>
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyInfoCtxDebugDump ##### -->
<para>
</para>
@keyInfoCtx:
@output:
<!-- ##### FUNCTION xmlSecKeyInfoCtxDebugXmlDump ##### -->
<para>
</para>
@keyInfoCtx:
@output:
<!-- ##### MACRO xmlSecKeyDataNameId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataNameGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### MACRO xmlSecKeyDataValueId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataValueGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### MACRO xmlSecKeyDataRetrievalMethodId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataRetrievalMethodGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### MACRO xmlSecKeyDataEncryptedKeyId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataEncryptedKeyGetKlass ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,521 +0,0 @@
<!-- ##### SECTION Title ##### -->
keys
<!-- ##### SECTION Short_Description ##### -->
Crypto key object definition.
<!-- ##### SECTION Long_Description ##### -->
<para>
Crypto key object definition.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### TYPEDEF xmlSecKeyUsage ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageSign ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageVerify ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageEncrypt ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageDecrypt ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageKeyExchange ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyUsageAny ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyUseWithInitialize ##### -->
<para>
</para>
@keyUseWith:
@Returns:
<!-- ##### FUNCTION xmlSecKeyUseWithFinalize ##### -->
<para>
</para>
@keyUseWith:
<!-- ##### FUNCTION xmlSecKeyUseWithReset ##### -->
<para>
</para>
@keyUseWith:
<!-- ##### FUNCTION xmlSecKeyUseWithCopy ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### FUNCTION xmlSecKeyUseWithCreate ##### -->
<para>
</para>
@application:
@identifier:
@Returns:
<!-- ##### FUNCTION xmlSecKeyUseWithDuplicate ##### -->
<para>
</para>
@keyUseWith:
@Returns:
<!-- ##### FUNCTION xmlSecKeyUseWithDestroy ##### -->
<para>
</para>
@keyUseWith:
<!-- ##### FUNCTION xmlSecKeyUseWithSet ##### -->
<para>
</para>
@keyUseWith:
@application:
@identifier:
@Returns:
<!-- ##### FUNCTION xmlSecKeyUseWithDebugDump ##### -->
<para>
</para>
@keyUseWith:
@output:
<!-- ##### FUNCTION xmlSecKeyUseWithDebugXmlDump ##### -->
<para>
</para>
@keyUseWith:
@output:
<!-- ##### STRUCT xmlSecKeyUseWith ##### -->
<para>
</para>
@application:
@identifier:
@reserved1:
@reserved2:
<!-- ##### MACRO xmlSecKeyUseWithPtrListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyUseWithPtrListGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### STRUCT xmlSecKeyReq ##### -->
<para>
</para>
@keyId:
@keyType:
@keyUsage:
@keyBitsSize:
@keyUseWithList:
@reserved1:
@reserved2:
<!-- ##### FUNCTION xmlSecKeyReqInitialize ##### -->
<para>
</para>
@keyReq:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReqFinalize ##### -->
<para>
</para>
@keyReq:
<!-- ##### FUNCTION xmlSecKeyReqReset ##### -->
<para>
</para>
@keyReq:
<!-- ##### FUNCTION xmlSecKeyReqCopy ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReqMatchKey ##### -->
<para>
</para>
@keyReq:
@key:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReqMatchKeyValue ##### -->
<para>
</para>
@keyReq:
@value:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReqDebugDump ##### -->
<para>
</para>
@keyReq:
@output:
<!-- ##### FUNCTION xmlSecKeyReqDebugXmlDump ##### -->
<para>
</para>
@keyReq:
@output:
<!-- ##### STRUCT xmlSecKey ##### -->
<para>
</para>
@name:
@value:
@dataList:
@usage:
@notValidBefore:
@notValidAfter:
<!-- ##### FUNCTION xmlSecKeyCreate ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDestroy ##### -->
<para>
</para>
@key:
<!-- ##### FUNCTION xmlSecKeyEmpty ##### -->
<para>
</para>
@key:
<!-- ##### FUNCTION xmlSecKeyDuplicate ##### -->
<para>
</para>
@key:
@Returns:
<!-- ##### FUNCTION xmlSecKeyCopy ##### -->
<para>
</para>
@keyDst:
@keySrc:
@Returns:
<!-- ##### FUNCTION xmlSecKeyGetName ##### -->
<para>
</para>
@key:
@Returns:
<!-- ##### FUNCTION xmlSecKeySetName ##### -->
<para>
</para>
@key:
@name:
@Returns:
<!-- ##### FUNCTION xmlSecKeyGetType ##### -->
<para>
</para>
@key:
@Returns:
<!-- ##### FUNCTION xmlSecKeyGetValue ##### -->
<para>
</para>
@key:
@Returns:
<!-- ##### FUNCTION xmlSecKeySetValue ##### -->
<para>
</para>
@key:
@value:
@Returns:
<!-- ##### FUNCTION xmlSecKeyGetData ##### -->
<para>
</para>
@key:
@dataId:
@Returns:
<!-- ##### FUNCTION xmlSecKeyEnsureData ##### -->
<para>
</para>
@key:
@dataId:
@Returns:
<!-- ##### FUNCTION xmlSecKeyAdoptData ##### -->
<para>
</para>
@key:
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDebugDump ##### -->
<para>
</para>
@key:
@output:
<!-- ##### FUNCTION xmlSecKeyDebugXmlDump ##### -->
<para>
</para>
@key:
@output:
<!-- ##### FUNCTION xmlSecKeyGenerate ##### -->
<para>
</para>
@dataId:
@sizeBits:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecKeyGenerateByName ##### -->
<para>
</para>
@name:
@sizeBits:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecKeyMatch ##### -->
<para>
</para>
@key:
@name:
@keyReq:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReadBuffer ##### -->
<para>
</para>
@dataId:
@buffer:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReadBinaryFile ##### -->
<para>
</para>
@dataId:
@filename:
@Returns:
<!-- ##### FUNCTION xmlSecKeyReadMemory ##### -->
<para>
</para>
@dataId:
@data:
@dataSize:
@Returns:
<!-- ##### MACRO xmlSecKeyIsValid ##### -->
<para>
</para>
@key:
<!-- ##### MACRO xmlSecKeyCheckId ##### -->
<para>
</para>
@key:
@keyId:
<!-- ##### MACRO xmlSecKeyPtrListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyPtrListGetKlass ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,930 +0,0 @@
<!-- ##### SECTION Title ##### -->
keysdata
<!-- ##### SECTION Short_Description ##### -->
Crypto key data object definition.
<!-- ##### SECTION Long_Description ##### -->
<para>
Crypto key data object definition.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### TYPEDEF xmlSecKeyDataUsage ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageUnknown ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNodeRead ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNodeWrite ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNodeRead ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNodeWrite ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNodeXml ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNodeBin ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageAny ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNode ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNode ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNode ##### -->
<para>
</para>
<!-- ##### TYPEDEF xmlSecKeyDataType ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeUnknown ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeNone ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypePublic ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypePrivate ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeSymmetric ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeSession ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypePermanent ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeTrusted ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecKeyDataTypeAny ##### -->
<para>
</para>
<!-- ##### ENUM xmlSecKeyDataFormat ##### -->
<para>
</para>
@xmlSecKeyDataFormatUnknown:
@xmlSecKeyDataFormatBinary:
@xmlSecKeyDataFormatPem:
@xmlSecKeyDataFormatDer:
@xmlSecKeyDataFormatPkcs8Pem:
@xmlSecKeyDataFormatPkcs8Der:
@xmlSecKeyDataFormatPkcs12:
@xmlSecKeyDataFormatCertPem:
@xmlSecKeyDataFormatCertDer:
<!-- ##### FUNCTION xmlSecKeyDataIdsGet ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdsInit ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdsShutdown ##### -->
<para>
</para>
@void:
<!-- ##### FUNCTION xmlSecKeyDataIdsRegisterDefault ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdsRegister ##### -->
<para>
</para>
@id:
@Returns:
<!-- ##### STRUCT xmlSecKeyData ##### -->
<para>
</para>
@id:
@reserved0:
@reserved1:
<!-- ##### FUNCTION xmlSecKeyDataCreate ##### -->
<para>
</para>
@id:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataDuplicate ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataDestroy ##### -->
<para>
</para>
@data:
<!-- ##### FUNCTION xmlSecKeyDataGenerate ##### -->
<para>
</para>
@data:
@sizeBits:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataGetType ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataGetSize ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataGetIdentifier ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataDebugDump ##### -->
<para>
</para>
@data:
@output:
<!-- ##### FUNCTION xmlSecKeyDataDebugXmlDump ##### -->
<para>
</para>
@data:
@output:
<!-- ##### FUNCTION xmlSecKeyDataXmlRead ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataXmlWrite ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinRead ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinWrite ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### MACRO xmlSecKeyDataGetName ##### -->
<para>
</para>
@data:
<!-- ##### MACRO xmlSecKeyDataIsValid ##### -->
<para>
</para>
@data:
<!-- ##### MACRO xmlSecKeyDataCheckId ##### -->
<para>
</para>
@data:
@dataId:
<!-- ##### MACRO xmlSecKeyDataCheckUsage ##### -->
<para>
</para>
@data:
@usg:
<!-- ##### MACRO xmlSecKeyDataCheckSize ##### -->
<para>
</para>
@data:
@size:
<!-- ##### MACRO xmlSecKeyDataIdUnknown ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION xmlSecKeyDataInitMethod ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataDuplicateMethod ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataFinalizeMethod ##### -->
<para>
</para>
@data:
<!-- ##### USER_FUNCTION xmlSecKeyDataXmlReadMethod ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataXmlWriteMethod ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataBinReadMethod ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataBinWriteMethod ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataGenerateMethod ##### -->
<para>
</para>
@data:
@sizeBits:
@type:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataGetTypeMethod ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataGetSizeMethod ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataGetIdentifierMethod ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataDebugDumpMethod ##### -->
<para>
</para>
@data:
@output:
<!-- ##### STRUCT xmlSecKeyDataKlass ##### -->
<para>
</para>
@klassSize:
@objSize:
@name:
@usage:
@href:
@dataNodeName:
@dataNodeNs:
@initialize:
@duplicate:
@finalize:
@generate:
@getType:
@getSize:
@getIdentifier:
@xmlRead:
@xmlWrite:
@binRead:
@binWrite:
@debugDump:
@debugXmlDump:
@reserved0:
@reserved1:
<!-- ##### MACRO xmlSecKeyDataKlassGetName ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO xmlSecKeyDataListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataListGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### MACRO xmlSecKeyDataIdListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataIdListGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdListFind ##### -->
<para>
</para>
@list:
@dataId:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdListFindByNode ##### -->
<para>
</para>
@list:
@nodeName:
@nodeNs:
@usage:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdListFindByHref ##### -->
<para>
</para>
@list:
@href:
@usage:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdListFindByName ##### -->
<para>
</para>
@list:
@name:
@usage:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataIdListDebugDump ##### -->
<para>
</para>
@list:
@output:
<!-- ##### FUNCTION xmlSecKeyDataIdListDebugXmlDump ##### -->
<para>
</para>
@list:
@output:
<!-- ##### MACRO xmlSecKeyDataBinarySize ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueInitialize ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDuplicate ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueFinalize ##### -->
<para>
</para>
@data:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueXmlRead ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueXmlWrite ##### -->
<para>
</para>
@id:
@key:
@node:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueBinRead ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueBinWrite ##### -->
<para>
</para>
@id:
@key:
@buf:
@bufSize:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDebugDump ##### -->
<para>
</para>
@data:
@output:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDebugXmlDump ##### -->
<para>
</para>
@data:
@output:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueGetSize ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueGetBuffer ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataBinaryValueSetBuffer ##### -->
<para>
</para>
@data:
@buf:
@bufSize:
@Returns:
<!-- ##### STRUCT xmlSecKeyDataStore ##### -->
<para>
</para>
@id:
@reserved0:
@reserved1:
<!-- ##### FUNCTION xmlSecKeyDataStoreCreate ##### -->
<para>
</para>
@id:
@Returns:
<!-- ##### FUNCTION xmlSecKeyDataStoreDestroy ##### -->
<para>
</para>
@store:
<!-- ##### MACRO xmlSecKeyDataStoreGetName ##### -->
<para>
</para>
@store:
<!-- ##### MACRO xmlSecKeyDataStoreIsValid ##### -->
<para>
</para>
@store:
<!-- ##### MACRO xmlSecKeyDataStoreCheckId ##### -->
<para>
</para>
@store:
@storeId:
<!-- ##### MACRO xmlSecKeyDataStoreCheckSize ##### -->
<para>
</para>
@store:
@size:
<!-- ##### MACRO xmlSecKeyDataStoreIdUnknown ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION xmlSecKeyDataStoreInitializeMethod ##### -->
<para>
</para>
@store:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyDataStoreFinalizeMethod ##### -->
<para>
</para>
@store:
<!-- ##### STRUCT xmlSecKeyDataStoreKlass ##### -->
<para>
</para>
@klassSize:
@objSize:
@name:
@initialize:
@finalize:
@reserved0:
@reserved1:
<!-- ##### MACRO xmlSecKeyDataStoreKlassGetName ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO xmlSecKeyDataStorePtrListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecKeyDataStorePtrListGetKlass ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,303 +0,0 @@
<!-- ##### SECTION Title ##### -->
keysmngr
<!-- ##### SECTION Short_Description ##### -->
Keys manager object support.
<!-- ##### SECTION Long_Description ##### -->
<para>
Keys manager object support.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecKeysMngrCreate ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecKeysMngrDestroy ##### -->
<para>
</para>
@mngr:
<!-- ##### FUNCTION xmlSecKeysMngrFindKey ##### -->
<para>
</para>
@mngr:
@name:
@keyInfoCtx:
@Returns:
<!-- ##### FUNCTION xmlSecKeysMngrAdoptKeysStore ##### -->
<para>
</para>
@mngr:
@store:
@Returns:
<!-- ##### FUNCTION xmlSecKeysMngrGetKeysStore ##### -->
<para>
</para>
@mngr:
@Returns:
<!-- ##### FUNCTION xmlSecKeysMngrAdoptDataStore ##### -->
<para>
</para>
@mngr:
@store:
@Returns:
<!-- ##### FUNCTION xmlSecKeysMngrGetDataStore ##### -->
<para>
</para>
@mngr:
@id:
@Returns:
<!-- ##### USER_FUNCTION xmlSecGetKeyCallback ##### -->
<para>
</para>
@keyInfoNode:
@keyInfoCtx:
@Returns:
<!-- ##### STRUCT xmlSecKeysMngr ##### -->
<para>
</para>
@keysStore:
@storesList:
@getKey:
<!-- ##### FUNCTION xmlSecKeysMngrGetKey ##### -->
<para>
</para>
@keyInfoNode:
@keyInfoCtx:
@Returns:
<!-- ##### STRUCT xmlSecKeyStore ##### -->
<para>
</para>
@id:
@reserved0:
@reserved1:
<!-- ##### FUNCTION xmlSecKeyStoreCreate ##### -->
<para>
</para>
@id:
@Returns:
<!-- ##### FUNCTION xmlSecKeyStoreDestroy ##### -->
<para>
</para>
@store:
<!-- ##### FUNCTION xmlSecKeyStoreFindKey ##### -->
<para>
</para>
@store:
@name:
@keyInfoCtx:
@Returns:
<!-- ##### MACRO xmlSecKeyStoreGetName ##### -->
<para>
</para>
@store:
<!-- ##### MACRO xmlSecKeyStoreIsValid ##### -->
<para>
</para>
@store:
<!-- ##### MACRO xmlSecKeyStoreCheckId ##### -->
<para>
</para>
@store:
@storeId:
<!-- ##### MACRO xmlSecKeyStoreCheckSize ##### -->
<para>
</para>
@store:
@size:
<!-- ##### MACRO xmlSecKeyStoreIdUnknown ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION xmlSecKeyStoreInitializeMethod ##### -->
<para>
</para>
@store:
@Returns:
<!-- ##### USER_FUNCTION xmlSecKeyStoreFinalizeMethod ##### -->
<para>
</para>
@store:
<!-- ##### USER_FUNCTION xmlSecKeyStoreFindKeyMethod ##### -->
<para>
</para>
@store:
@name:
@keyInfoCtx:
@Returns:
<!-- ##### STRUCT xmlSecKeyStoreKlass ##### -->
<para>
</para>
@klassSize:
@objSize:
@name:
@initialize:
@finalize:
@findKey:
@reserved0:
@reserved1:
<!-- ##### MACRO xmlSecKeyStoreKlassGetName ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO xmlSecSimpleKeysStoreId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecSimpleKeysStoreGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecSimpleKeysStoreAdoptKey ##### -->
<para>
</para>
@store:
@key:
@Returns:
<!-- ##### FUNCTION xmlSecSimpleKeysStoreLoad ##### -->
<para>
</para>
@store:
@uri:
@keysMngr:
@Returns:
<!-- ##### FUNCTION xmlSecSimpleKeysStoreSave ##### -->
<para>
</para>
@store:
@filename:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecSimpleKeysStoreGetKeys ##### -->
<para>
</para>
@store:
@Returns:

View File

@ -1,275 +0,0 @@
<!-- ##### SECTION Title ##### -->
list
<!-- ##### SECTION Short_Description ##### -->
Generic list structure implementation.
<!-- ##### SECTION Long_Description ##### -->
<para>
Generic list structure implementation.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### STRUCT xmlSecPtrList ##### -->
<para>
</para>
@id:
@data:
@use:
@max:
@allocMode:
<!-- ##### FUNCTION xmlSecPtrListSetDefaultAllocMode ##### -->
<para>
</para>
@defAllocMode:
@defInitialSize:
<!-- ##### FUNCTION xmlSecPtrListInitialize ##### -->
<para>
</para>
@list:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListFinalize ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION xmlSecPtrListCreate ##### -->
<para>
</para>
@id:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListDestroy ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION xmlSecPtrListEmpty ##### -->
<para>
</para>
@list:
<!-- ##### FUNCTION xmlSecPtrListCopy ##### -->
<para>
</para>
@dst:
@src:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListDuplicate ##### -->
<para>
</para>
@list:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListGetSize ##### -->
<para>
</para>
@list:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListGetItem ##### -->
<para>
</para>
@list:
@pos:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListAdd ##### -->
<para>
</para>
@list:
@item:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListSet ##### -->
<para>
</para>
@list:
@item:
@pos:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListRemove ##### -->
<para>
</para>
@list:
@pos:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListRemoveAndReturn ##### -->
<para>
</para>
@list:
@pos:
@Returns:
<!-- ##### FUNCTION xmlSecPtrListDebugDump ##### -->
<para>
</para>
@list:
@output:
<!-- ##### FUNCTION xmlSecPtrListDebugXmlDump ##### -->
<para>
</para>
@list:
@output:
<!-- ##### MACRO xmlSecPtrListGetName ##### -->
<para>
</para>
@list:
<!-- ##### MACRO xmlSecPtrListIsValid ##### -->
<para>
</para>
@list:
<!-- ##### MACRO xmlSecPtrListCheckId ##### -->
<para>
</para>
@list:
@dataId:
<!-- ##### MACRO xmlSecPtrListIdUnknown ##### -->
<para>
</para>
<!-- ##### USER_FUNCTION xmlSecPtrDuplicateItemMethod ##### -->
<para>
</para>
@ptr:
@Returns:
<!-- ##### USER_FUNCTION xmlSecPtrDestroyItemMethod ##### -->
<para>
</para>
@ptr:
<!-- ##### USER_FUNCTION xmlSecPtrDebugDumpItemMethod ##### -->
<para>
</para>
@ptr:
@output:
<!-- ##### STRUCT xmlSecPtrListKlass ##### -->
<para>
</para>
@name:
@duplicateItem:
@destroyItem:
@debugDumpItem:
@debugXmlDumpItem:
<!-- ##### MACRO xmlSecPtrListKlassGetName ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO xmlSecStringListId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecStringListGetKlass ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,47 +0,0 @@
<!-- ##### SECTION Title ##### -->
membuf
<!-- ##### SECTION Short_Description ##### -->
Memory buffer transform implementation.
<!-- ##### SECTION Long_Description ##### -->
<para>
Memory buffer transform implementation.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO xmlSecTransformMemBufId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecTransformMemBufGetKlass ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### FUNCTION xmlSecTransformMemBufGetBuffer ##### -->
<para>
</para>
@transform:
@Returns:

View File

@ -1,172 +0,0 @@
<!-- ##### SECTION Title ##### -->
nodeset
<!-- ##### SECTION Short_Description ##### -->
Nodeset object implementation.
<!-- ##### SECTION Long_Description ##### -->
<para>
Nodeset object implementation.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### ENUM xmlSecNodeSetType ##### -->
<para>
</para>
@xmlSecNodeSetNormal:
@xmlSecNodeSetInvert:
@xmlSecNodeSetTree:
@xmlSecNodeSetTreeWithoutComments:
@xmlSecNodeSetTreeInvert:
@xmlSecNodeSetTreeWithoutCommentsInvert:
@xmlSecNodeSetList:
<!-- ##### ENUM xmlSecNodeSetOp ##### -->
<para>
</para>
@xmlSecNodeSetIntersection:
@xmlSecNodeSetSubtraction:
@xmlSecNodeSetUnion:
<!-- ##### STRUCT xmlSecNodeSet ##### -->
<para>
</para>
@nodes:
@doc:
@destroyDoc:
@type:
@op:
@next:
@prev:
@children:
<!-- ##### USER_FUNCTION xmlSecNodeSetWalkCallback ##### -->
<para>
</para>
@nset:
@cur:
@parent:
@data:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetCreate ##### -->
<para>
</para>
@doc:
@nodes:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetDestroy ##### -->
<para>
</para>
@nset:
<!-- ##### FUNCTION xmlSecNodeSetDocDestroy ##### -->
<para>
</para>
@nset:
<!-- ##### FUNCTION xmlSecNodeSetContains ##### -->
<para>
</para>
@nset:
@node:
@parent:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetAdd ##### -->
<para>
</para>
@nset:
@newNSet:
@op:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetAddList ##### -->
<para>
</para>
@nset:
@newNSet:
@op:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetGetChildren ##### -->
<para>
</para>
@doc:
@parent:
@withComments:
@invert:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetWalk ##### -->
<para>
</para>
@nset:
@walkFunc:
@data:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetDumpTextNodes ##### -->
<para>
</para>
@nset:
@out:
@Returns:
<!-- ##### FUNCTION xmlSecNodeSetDebugDump ##### -->
<para>
</para>
@nset:
@output:

View File

@ -1,72 +0,0 @@
<!-- ##### SECTION Title ##### -->
parser
<!-- ##### SECTION Short_Description ##### -->
Parser transform implementation.
<!-- ##### SECTION Long_Description ##### -->
<para>
Parser transform implementation.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecParseFile ##### -->
<para>
</para>
@filename:
@Returns:
<!-- ##### FUNCTION xmlSecParseMemory ##### -->
<para>
</para>
@buffer:
@size:
@recovery:
@Returns:
<!-- ##### FUNCTION xmlSecParseMemoryExt ##### -->
<para>
</para>
@prefix:
@prefixSize:
@buffer:
@bufferSize:
@postfix:
@postfixSize:
@Returns:
<!-- ##### MACRO xmlSecTransformXmlParserId ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecTransformXmlParserGetKlass ##### -->
<para>
</para>
@void:
@Returns:

View File

@ -1,288 +0,0 @@
<!-- ##### SECTION Title ##### -->
private
<!-- ##### SECTION Short_Description ##### -->
Private header for building xmlsec-crypto-engine libraries.
<!-- ##### SECTION Long_Description ##### -->
<para>
Private header for building xmlsec-crypto-engine libraries.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### USER_FUNCTION xmlSecCryptoInitMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoShutdownMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoKeysMngrInitMethod ##### -->
<para>
</para>
@mngr:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoKeyDataGetKlassMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoKeyDataStoreGetKlassMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoTransformGetKlassMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppInitMethod ##### -->
<para>
</para>
@config:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppShutdownMethod ##### -->
<para>
</para>
@void:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeysMngrCertLoadMethod ##### -->
<para>
</para>
@mngr:
@filename:
@format:
@type:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeysMngrCertLoadMemoryMethod ##### -->
<para>
</para>
@mngr:
@data:
@dataSize:
@format:
@type:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyLoadMethod ##### -->
<para>
</para>
@filename:
@format:
@pwd:
@pwdCallback:
@pwdCallbackCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyLoadMemoryMethod ##### -->
<para>
</para>
@data:
@dataSize:
@format:
@pwd:
@pwdCallback:
@pwdCallbackCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppPkcs12LoadMethod ##### -->
<para>
</para>
@filename:
@pwd:
@pwdCallback:
@pwdCallbackCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppPkcs12LoadMemoryMethod ##### -->
<para>
</para>
@data:
@dataSize:
@pwd:
@pwdCallback:
@pwdCallbackCtx:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyCertLoadMethod ##### -->
<para>
</para>
@key:
@filename:
@format:
@Returns:
<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyCertLoadMemoryMethod ##### -->
<para>
</para>
@key:
@data:
@dataSize:
@format:
@Returns:
<!-- ##### STRUCT xmlSecCryptoDLFunctions ##### -->
<para>
</para>
@cryptoInit:
@cryptoShutdown:
@cryptoKeysMngrInit:
@keyDataAesGetKlass:
@keyDataDesGetKlass:
@keyDataDsaGetKlass:
@keyDataEcdsaGetKlass:
@keyDataGost2001GetKlass:
@keyDataGostR3410_2012_256GetKlass:
@keyDataGostR3410_2012_512GetKlass:
@keyDataHmacGetKlass:
@keyDataRsaGetKlass:
@keyDataX509GetKlass:
@keyDataRawX509CertGetKlass:
@x509StoreGetKlass:
@transformAes128CbcGetKlass:
@transformAes192CbcGetKlass:
@transformAes256CbcGetKlass:
@transformKWAes128GetKlass:
@transformKWAes192GetKlass:
@transformKWAes256GetKlass:
@transformDes3CbcGetKlass:
@transformKWDes3GetKlass:
@transformDsaSha1GetKlass:
@transformDsaSha256GetKlass:
@transformEcdsaSha1GetKlass:
@transformEcdsaSha224GetKlass:
@transformEcdsaSha256GetKlass:
@transformEcdsaSha384GetKlass:
@transformEcdsaSha512GetKlass:
@transformGost2001GostR3411_94GetKlass:
@transformGostR3410_2012GostR3411_2012_256GetKlass:
@transformGostR3410_2012GostR3411_2012_512GetKlass:
@transformHmacMd5GetKlass:
@transformHmacRipemd160GetKlass:
@transformHmacSha1GetKlass:
@transformHmacSha224GetKlass:
@transformHmacSha256GetKlass:
@transformHmacSha384GetKlass:
@transformHmacSha512GetKlass:
@transformMd5GetKlass:
@transformRipemd160GetKlass:
@transformRsaMd5GetKlass:
@transformRsaRipemd160GetKlass:
@transformRsaSha1GetKlass:
@transformRsaSha224GetKlass:
@transformRsaSha256GetKlass:
@transformRsaSha384GetKlass:
@transformRsaSha512GetKlass:
@transformRsaPkcs1GetKlass:
@transformRsaOaepGetKlass:
@transformGostR3411_94GetKlass:
@transformGostR3411_2012_256GetKlass:
@transformGostR3411_2012_512GetKlass:
@transformSha1GetKlass:
@transformSha224GetKlass:
@transformSha256GetKlass:
@transformSha384GetKlass:
@transformSha512GetKlass:
@cryptoAppInit:
@cryptoAppShutdown:
@cryptoAppDefaultKeysMngrInit:
@cryptoAppDefaultKeysMngrAdoptKey:
@cryptoAppDefaultKeysMngrLoad:
@cryptoAppDefaultKeysMngrSave:
@cryptoAppKeysMngrCertLoad:
@cryptoAppKeysMngrCertLoadMemory:
@cryptoAppKeyLoad:
@cryptoAppKeyLoadMemory:
@cryptoAppPkcs12Load:
@cryptoAppPkcs12LoadMemory:
@cryptoAppKeyCertLoad:
@cryptoAppKeyCertLoadMemory:
@cryptoAppDefaultPwdCallback:
<!-- ##### MACRO xmlSecStrPrintf ##### -->
<para>
</para>
<!-- ##### MACRO xmlSecStrVPrintf ##### -->
<para>
</para>

View File

@ -1,449 +0,0 @@
<!-- ##### SECTION Title ##### -->
templates
<!-- ##### SECTION Short_Description ##### -->
Dynamic templates creation functions.
<!-- ##### SECTION Long_Description ##### -->
<para>
Dynamic templates creation functions.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### FUNCTION xmlSecTmplSignatureCreate ##### -->
<para>
</para>
@doc:
@c14nMethodId:
@signMethodId:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureCreateNsPref ##### -->
<para>
</para>
@doc:
@c14nMethodId:
@signMethodId:
@id:
@nsPrefix:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureEnsureKeyInfo ##### -->
<para>
</para>
@signNode:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureAddReference ##### -->
<para>
</para>
@signNode:
@digestMethodId:
@id:
@uri:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureAddObject ##### -->
<para>
</para>
@signNode:
@id:
@mimeType:
@encoding:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureGetSignMethodNode ##### -->
<para>
</para>
@signNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplSignatureGetC14NMethodNode ##### -->
<para>
</para>
@signNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplReferenceAddTransform ##### -->
<para>
</para>
@referenceNode:
@transformId:
@Returns:
<!-- ##### FUNCTION xmlSecTmplObjectAddSignProperties ##### -->
<para>
</para>
@objectNode:
@id:
@target:
@Returns:
<!-- ##### FUNCTION xmlSecTmplObjectAddManifest ##### -->
<para>
</para>
@objectNode:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecTmplManifestAddReference ##### -->
<para>
</para>
@manifestNode:
@digestMethodId:
@id:
@uri:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataCreate ##### -->
<para>
</para>
@doc:
@encMethodId:
@id:
@type:
@mimeType:
@encoding:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataEnsureKeyInfo ##### -->
<para>
</para>
@encNode:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataEnsureEncProperties ##### -->
<para>
</para>
@encNode:
@id:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataAddEncProperty ##### -->
<para>
</para>
@encNode:
@id:
@target:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataEnsureCipherValue ##### -->
<para>
</para>
@encNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataEnsureCipherReference ##### -->
<para>
</para>
@encNode:
@uri:
@Returns:
<!-- ##### FUNCTION xmlSecTmplEncDataGetEncMethodNode ##### -->
<para>
</para>
@encNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplCipherReferenceAddTransform ##### -->
<para>
</para>
@cipherReferenceNode:
@transformId:
@Returns:
<!-- ##### FUNCTION xmlSecTmplReferenceListAddDataReference ##### -->
<para>
</para>
@encNode:
@uri:
@Returns:
<!-- ##### FUNCTION xmlSecTmplReferenceListAddKeyReference ##### -->
<para>
</para>
@encNode:
@uri:
@Returns:
<!-- ##### FUNCTION xmlSecTmplKeyInfoAddKeyName ##### -->
<para>
</para>
@keyInfoNode:
@name:
@Returns:
<!-- ##### FUNCTION xmlSecTmplKeyInfoAddKeyValue ##### -->
<para>
</para>
@keyInfoNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplKeyInfoAddX509Data ##### -->
<para>
</para>
@keyInfoNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplKeyInfoAddRetrievalMethod ##### -->
<para>
</para>
@keyInfoNode:
@uri:
@type:
@Returns:
<!-- ##### FUNCTION xmlSecTmplRetrievalMethodAddTransform ##### -->
<para>
</para>
@retrMethodNode:
@transformId:
@Returns:
<!-- ##### FUNCTION xmlSecTmplKeyInfoAddEncryptedKey ##### -->
<para>
</para>
@keyInfoNode:
@encMethodId:
@id:
@type:
@recipient:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509DataAddIssuerSerial ##### -->
<para>
</para>
@x509DataNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509IssuerSerialAddIssuerName ##### -->
<para>
</para>
@x509IssuerSerialNode:
@issuerName:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509IssuerSerialAddSerialNumber ##### -->
<para>
</para>
@x509IssuerSerialNode:
@serial:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509DataAddSubjectName ##### -->
<para>
</para>
@x509DataNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509DataAddSKI ##### -->
<para>
</para>
@x509DataNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509DataAddCertificate ##### -->
<para>
</para>
@x509DataNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplX509DataAddCRL ##### -->
<para>
</para>
@x509DataNode:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddHmacOutputLength ##### -->
<para>
</para>
@transformNode:
@bitsLen:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddRsaOaepParam ##### -->
<para>
</para>
@transformNode:
@buf:
@size:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddXsltStylesheet ##### -->
<para>
</para>
@transformNode:
@xslt:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddC14NInclNamespaces ##### -->
<para>
</para>
@transformNode:
@prefixList:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddXPath ##### -->
<para>
</para>
@transformNode:
@expression:
@nsList:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddXPath2 ##### -->
<para>
</para>
@transformNode:
@type:
@expression:
@nsList:
@Returns:
<!-- ##### FUNCTION xmlSecTmplTransformAddXPointer ##### -->
<para>
</para>
@transformNode:
@expression:
@nsList:
@Returns:

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +0,0 @@
<!-- ##### SECTION Title ##### -->
version
<!-- ##### SECTION Short_Description ##### -->
Version macros.
<!-- ##### SECTION Long_Description ##### -->
<para>
Version macros.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO XMLSEC_VERSION ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_VERSION_MAJOR ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_VERSION_MINOR ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_VERSION_SUBMINOR ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_VERSION_INFO ##### -->
<para>
</para>

View File

@ -1,74 +0,0 @@
<!-- ##### SECTION Title ##### -->
x509
<!-- ##### SECTION Short_Description ##### -->
&lt;dsig:X509Certificate/&gt; node parser.
<!-- ##### SECTION Long_Description ##### -->
<para>
&lt;dsig:X509Certificate/&gt; node parser.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### MACRO XMLSEC_X509DATA_CERTIFICATE_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_X509DATA_SUBJECTNAME_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_X509DATA_ISSUERSERIAL_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_X509DATA_SKI_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_X509DATA_CRL_NODE ##### -->
<para>
</para>
<!-- ##### MACRO XMLSEC_X509DATA_DEFAULT ##### -->
<para>
</para>
<!-- ##### FUNCTION xmlSecX509DataGetNodeContent ##### -->
<para>
</para>
@node:
@keyInfoCtx:
@Returns:

Some files were not shown because too many files have changed in this diff Show More