File: xmlsec-notes-new-crypto-skeleton.html

package info (click to toggle)
xmlsec1 1.2.41-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 16,144 kB
  • sloc: ansic: 78,479; xml: 15,245; sh: 6,367; makefile: 1,204; javascript: 416; perl: 199
file content (200 lines) | stat: -rw-r--r-- 7,715 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Creating a framework from the skeleton.: XML Security Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="XML Security Library Reference Manual">
<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
<link rel="prev" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
<link rel="next" href="xmlsec-notes-new-crypto-functions.html" title="xmlSecCryptoApp* functions.">
<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="xmlsec-notes-new-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="xmlsec-notes-new-crypto-skeleton"></a>Creating a framework from the skeleton.</h2></div></div></div>
<p>
	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):
	</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p>
	Copy src/skeleton and include/xmlsec/skeleton folders to src/mycrypto and
	include/xmlsec/mycrypto folders:
	</p>
<div class="example">
<a name="id-1.2.14.3.2.1.1.1.1"></a><p class="title"><b>Example 25. Coping skeleton folders:</b></p>
<div class="example-contents"><pre class="programlisting">
cp -r src/skeleton src/mycrypto
cp -r include/xmlsec/skeleton include/xmlsec/mycrypto
	    </pre></div>
</div>
<p><br class="example-break">	
	</p>
</li>
<li class="listitem">
<p>
	Replace "skeleton" with "mycrypto" in the copied files (note that there
	are different possible cases here):
	</p>
<div class="example">
<a name="id-1.2.14.3.2.1.2.1.1"></a><p class="title"><b>Example 26. Replacing "skeleton" with "mycrypto".</b></p>
<div class="example-contents"><pre class="programlisting">
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' &gt; $i.tmp;
    mv $i.tmp $i;
done
	    </pre></div>
</div>
<p><br class="example-break">
	</p>
</li>
<li class="listitem">
<p>
	Add "xmlsec-mycrypto" library to the "include/xmlsec/crypto.h" file:
	</p>
<div class="example">
<a name="id-1.2.14.3.2.1.3.1.1"></a><p class="title"><b>Example 27. Modifying include/xmlsec/crypto.h file.</b></p>
<div class="example-contents"><pre class="programlisting">
...	    
#ifdef XMLSEC_CRYPTO_MYCRYPTO
#include &lt;xmlsec/mycrypto/app.h&gt;
#include &lt;xmlsec/mycrypto/crypto.h&gt;
#include &lt;xmlsec/mycrypto/symbols.h&gt;
#else /* XMLSEC_CRYPTO_MYCRYPTO */
...
#endif /* XMLSEC_CRYPTO_MYCRYPTO */
...
	    </pre></div>
</div>
<p><br class="example-break">
	</p>
</li>
<li class="listitem">
<p>
	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):
	</p>
<div class="example">
<a name="id-1.2.14.3.2.1.4.1.1"></a><p class="title"><b>Example 28. Modifying configure.in file.</b></p>
<div class="example-contents"><pre class="programlisting">
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 &gt;= $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 &gt; /dev/null 2&gt;&amp;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
...
])
	    </pre></div>
</div>
<p><br class="example-break">
	</p>
</li>
<li class="listitem"><p>Modify "xmlsec.spec.in" file to create "xmlsec-mycrypto"
	RPM (if necessary).
	</p></li>
</ul></div>
<p>
	
	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):
	</p>
<div class="example">
<a name="id-1.2.14.3.2.2"></a><p class="title"><b>Example 29. Compiling the results.</b></p>
<div class="example-contents"><pre class="programlisting">
./autogen.sh --without-openssl --without-nss --without-gnutls --without-gcrypt \
    	     --with-mycrypto=$HOME --disable-tmpl-tests
make	
	    </pre></div>
</div>
<p><br class="example-break">
	</p>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.33.1</div>
</body>
</html>