chmod +x lib/libgnutls-config
]],[[]])
-AC_CONFIG_FILES([Makefile src/Makefile lib/Makefile lib/libgnutls-config lib/gnutls.h doc/Makefile])
+AC_CONFIG_FILES([Makefile src/Makefile lib/Makefile lib/libgnutls-config \
+lib/gnutls.h doc/Makefile src/x509/Makefile src/srp/Makefile ])
AC_OUTPUT
m4datadir = $(datadir)/aclocal
m4data_DATA = libgnutls.m4
-EXTRA_DIST = debug.h gnutls_compress.h defines.h \
+EXTRA_DIST = debug.h gnutls_compress.h defines.h pkcs1.asn pkix.asn \
gnutls_cipher.h gnutls_buffers.h gnutls_errors.h gnutls_int.h \
gnutls_handshake.h gnutls_num.h gnutls_algorithms.h gnutls_dh.h \
gnutls_kx.h gnutls_hash_int.h gnutls_cipher_int.h gnutls_db.h \
cert_ASN.y cert_asn1.c cert_der.c gnutls_datum.c auth_rsa.c \
gnutls_gcry.c ext_dnsname.c gnutls_pk.c gnutls_cert.c cert_verify.c\
gnutls_global.c gnutls_privkey.c gnutls_constate.c gnutls_anon_cred.c \
- gnutls_sig_check.c
+ gnutls_sig_check.c pkix_asn1_tab.c pkcs1_asn1_tab.c
libgnutls_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
+pkix_asn1_tab.c: pkix.asn
+ ../src/asn1c pkix.asn pkix_asn1_tab.c
+
+pkcs1_asn1_tab.c: pkcs1.asn
+ ../src/asn1c pkcs1.asn pkcs1_asn1_tab.c
+
int
-_asn1_create_static_structure(node_asn *pointer,char *file_name)
+_asn1_create_static_structure(node_asn *pointer,char *file_name, char* out_name)
{
FILE *file;
node_asn *p;
structure_name[dot_p-slash_p]=0;
strcat(structure_name,"_asn1_tab");
- memcpy(file_out_name,file_name,dot_p-file_name);
- file_out_name[dot_p-file_name]=0;
- strcat(file_out_name,"_asn1_tab.c");
-
- file=fopen(file_out_name,"w");
+ if (out_name==NULL) {
+ memcpy(file_out_name,file_name,dot_p-file_name);
+ file_out_name[dot_p-file_name]=0;
+ strcat(file_out_name,"_asn1_tab.c");
+ } else {
+ strncpy( file_out_name, out_name, sizeof(file_out_name));
+ }
+ file=fopen( file_out_name,"w");
if(file==NULL) return ASN_FILE_NOT_FOUND;
int
asn1_read_value(node_asn *root,char *name,unsigned char *value,int *len);
+int
+asn1_create_tree(static_asn *root,node_asn **pointer);
#endif
* This will not be the case in the final version. These files
* are located in the src/ directory of gnutls distribution.
*/
-int gnutls_global_init(char* PKIX, char* PKCS1);
+int gnutls_global_init();
void gnutls_global_deinit();
# include <signal.h>
#endif
+/* created by asn1c */
+extern const static_asn pkcs1_asn1_tab[];
+extern const static_asn pkix_asn1_tab[];
+
static void* old_sig_handler;
ssize_t (*recv_func)( SOCKET, void*, size_t, int);
ssize_t (*send_func)( SOCKET,const void*, size_t, int);
* You must call gnutls_global_deinit() when gnutls usage is no longer needed
* Returns zero on success.
**/
-int gnutls_global_init(char* PKIX, char* PKCS1)
+int gnutls_global_init()
{
int result;
* version.
*/
- result = asn1_parser_asn1(PKIX, &PKIX1_ASN);
-
+// result=asn1_create_tree( (void*)pkix_asn1_tab, &PKIX1_ASN);
+ result=asn1_parser_asn1( "/home/nmav/cvs/gnutls/lib/pkix.asn", &PKIX1_ASN);
if (result != ASN_OK) {
return GNUTLS_E_ASN1_PARSING_ERROR;
}
-
- result = asn1_parser_asn1(PKCS1, &PKCS1_ASN);
+// result=asn1_create_tree( (void*)pkcs1_asn1_tab, &PKCS1_ASN);
+ result=asn1_parser_asn1( "/home/nmav/cvs/gnutls/lib/pkcs1.asn" , &PKCS1_ASN);
if (result != ASN_OK) {
+ asn1_delete_structure( PKIX1_ASN);
return GNUTLS_E_PARSING_ERROR;
}
--- /dev/null
+PKCS-1 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) modules(0) pkcs-1(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+
+-- Main structures
+
+RSAPublicKey ::= SEQUENCE {
+ modulus INTEGER, -- n
+ publicExponent INTEGER -- e
+}
+
+--
+-- Representation of RSA private key with information for the
+-- CRT algorithm.
+--
+RSAPrivateKey ::= SEQUENCE {
+ version Version,
+ modulus INTEGER, -- (Usually large) n
+ publicExponent INTEGER, -- (Usually small) e
+ privateExponent INTEGER, -- (Usually large) d
+ prime1 INTEGER, -- (Usually large) p
+ prime2 INTEGER, -- (Usually large) q
+ exponent1 INTEGER, -- (Usually large) d mod (p-1)
+ exponent2 INTEGER, -- (Usually large) d mod (q-1)
+ coefficient INTEGER, -- (Usually large) (inverse of q) mod p
+ otherPrimeInfos OtherPrimeInfos OPTIONAL
+}
+
+Version ::= INTEGER { two-prime(0), multi(1) }
+-- (CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})
+
+OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
+
+OtherPrimeInfo ::= SEQUENCE {
+ prime INTEGER, -- ri
+ exponent INTEGER, -- di
+ coefficient INTEGER -- ti
+}
+
+-- for signature calculation
+-- added by nmav
+
+AlgorithmIdentifier ::= SEQUENCE {
+ algorithm OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY algorithm OPTIONAL
+}
+ -- contains a value of the type
+ -- registered for use with the
+ -- algorithm object identifier value
+
+DigestInfo ::= SEQUENCE {
+ digestAlgorithm DigestAlgorithmIdentifier,
+ digest Digest
+}
+
+DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+Digest ::= OCTET STRING
+
+
+END
\ No newline at end of file
{"OtherPrimeInfos",1612709899,0},
{"MAX",1074266122,"1"},
{0,2,"OtherPrimeInfo"},
- {"OtherPrimeInfo",536870917,0},
+ {"OtherPrimeInfo",1610612741,0},
{"prime",1073741827,0},
{"exponent",1073741827,0},
{"coefficient",3,0},
+ {"AlgorithmIdentifier",1610612741,0},
+ {"algorithm",1073741836,0},
+ {"parameters",541081613,0},
+ {"algorithm",1,0},
+ {"DigestInfo",1610612741,0},
+ {"digestAlgorithm",1073741826,"DigestAlgorithmIdentifier"},
+ {"digest",2,"Digest"},
+ {"DigestAlgorithmIdentifier",1073741826,"AlgorithmIdentifier"},
+ {"Digest",7,0},
{0,0,0}
};
EXTRA_DIST = port.h prime.gaa crypt.gaa crypt-gaa.h README.crypt prime-gaa.h \
- README tpasswd tpasswd.conf pkcs1.asn pkix.asn cert.pem \
- key.pem ca.pem
+ README
+SUBDIRS = srp x509
INCLUDES = -I../lib
-noinst_PROGRAMS = serv cli crypt prime CertificateExample
+noinst_PROGRAMS = serv cli crypt prime asn1c CertificateExample
serv_SOURCES = serv.c
serv_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
crypt_SOURCES = crypt-gaa.c crypt.c
cli_SOURCES = cli.c
cli_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
-CertificateExample_SOURCES = CertificateExample.c
+CertificateExample_SOURCES = CertificateExample.c
CertificateExample_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
+asn1c_SOURCES = asn1c.c
+asn1c_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
crypt-gaa.c: crypt.gaa
gaa crypt.gaa -o crypt-gaa.c -i crypt-gaa.h
main(int argc,char *argv[])
{
int result;
- char file_name[128];
-
- if(argc==2) strcpy(file_name,argv[1]);
- else file_name[0]=0;
-
- strcat(file_name,"pkix.asn");
-
- result=asn1_parser_asn1_file_c(file_name);
+ FILE* tmp;
+
+ if(argc!=3) {
+ fprintf(stderr, "Usage: %s: input.asn output.c\n", argv[0]);
+ exit(1);
+ }
+
+ result=asn1_parser_asn1_file_c( argv[1], argv[2]);
if(result==ASN_SYNTAX_ERROR){
printf("PARSE ERROR\n");
exit(1);
}
- if (gnutls_global_init("pkix.asn", "pkcs1.asn") < 0) {
+ if (gnutls_global_init() < 0) {
fprintf(stderr, "global state initialization error\n");
exit(1);
}
}
}
- if (gnutls_global_init("pkix.asn", "pkcs1.asn") < 0) {
+ if (gnutls_global_init() < 0) {
fprintf(stderr, "global state initialization error\n");
exit(1);
}
--- /dev/null
+EXTRA_DIST = tpasswd tpasswd.conf
--- /dev/null
+EXTRA_DIST = ca.pem cert.pem key.pem