From 92dbd3abbadb6e7ab42c59a4858af56e4f65af50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Tue, 24 Aug 1999 22:05:08 -0700
Subject: [PATCH] patches to avoid errors when compiling without Gmp.mpz

Rev: lib/modules/Crypto/dsa.pike:1.7
Rev: lib/modules/Crypto/rsa.pike:1.17
Rev: lib/modules/Languages.pmod/PLIS.pmod:1.8
Rev: lib/modules/Protocols.pmod/LDAP.pmod/client.pike:1.3
Rev: lib/modules/Protocols.pmod/LDAP.pmod/ldap_privates.pmod:1.3
Rev: lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike:1.2
Rev: lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod:1.8
Rev: lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod:1.4
Rev: lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod:1.6
Rev: lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod:1.6
Rev: lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod:1.2
Rev: lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod:1.7
Rev: lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod:1.10
Rev: lib/modules/Tools.pmod/X509.pmod:1.7
---
 lib/modules/Crypto/dsa.pike                    |  4 ++++
 lib/modules/Crypto/rsa.pike                    |  6 +++++-
 lib/modules/Languages.pmod/PLIS.pmod           | 18 ++++++++++++++----
 .../Protocols.pmod/LDAP.pmod/client.pike       |  4 +++-
 .../LDAP.pmod/ldap_privates.pmod               |  6 +++++-
 .../Protocols.pmod/LDAP.pmod/protocol.pike     |  5 ++++-
 .../Standards.pmod/ASN1.pmod/Decode.pmod       |  4 ++++
 .../Standards.pmod/ASN1.pmod/Encode.pmod       |  4 ++++
 lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod  |  4 ++++
 .../Standards.pmod/PKCS.pmod/Certificate.pmod  |  3 +++
 lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod  |  4 ++++
 .../Standards.pmod/PKCS.pmod/Identifiers.pmod  |  4 ++++
 lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod  |  3 +++
 lib/modules/Tools.pmod/X509.pmod               |  4 ++++
 14 files changed, 65 insertions(+), 8 deletions(-)

diff --git a/lib/modules/Crypto/dsa.pike b/lib/modules/Crypto/dsa.pike
index a773cae6e2..f0a08a724c 100644
--- a/lib/modules/Crypto/dsa.pike
+++ b/lib/modules/Crypto/dsa.pike
@@ -3,6 +3,8 @@
  * The Digital Signature Algorithm (aka DSS, Digital Signature Standard).
  */
 
+#if constant(Gmp.mpz)
+
 #define bignum object(Gmp.mpz)
 
 bignum p; /* Modulo */
@@ -264,3 +266,5 @@ int public_key_equal (object dsa)
 {
   return p == dsa->p && q == dsa->q && g == dsa->g && y == dsa->y;
 }
+
+#endif
diff --git a/lib/modules/Crypto/rsa.pike b/lib/modules/Crypto/rsa.pike
index 7447b1684a..c796e0f282 100644
--- a/lib/modules/Crypto/rsa.pike
+++ b/lib/modules/Crypto/rsa.pike
@@ -1,8 +1,10 @@
-/* $Id: rsa.pike,v 1.16 1999/06/08 02:55:17 mast Exp $
+/* $Id: rsa.pike,v 1.17 1999/08/25 05:04:14 hubbe Exp $
  *
  * Follow the PKCS#1 standard for padding and encryption.
  */
 
+#if constan(Gmp.mpz)
+
 #define bignum object(Gmp.mpz)
 #define BIGNUM (Gmp.mpz)
 
@@ -232,3 +234,5 @@ int public_key_equal (object rsa)
 {
   return n == rsa->n && e == rsa->e;
 }
+
+#endif
diff --git a/lib/modules/Languages.pmod/PLIS.pmod b/lib/modules/Languages.pmod/PLIS.pmod
index f6c9586bff..005da63320 100644
--- a/lib/modules/Languages.pmod/PLIS.pmod
+++ b/lib/modules/Languages.pmod/PLIS.pmod
@@ -11,6 +11,14 @@
 #define WERROR(x)
 #endif
 
+#if constant(Gmp.mpz)
+#define BIGNUM object
+#define NUMBER(X) Gmp.mpz(X)
+#else
+#define BIGNUM int
+#define NUMBER(X) ( (int) (X) )
+#endif
+
 /* Data shared between all Lisp objects */
 mapping symbol_table = ([ ]);
 
@@ -482,7 +490,7 @@ class Parser
 	//	werror("Scanning number\n");
 	string s = `+(@ a);
 	buffer = buffer[ strlen(s) ..];
-	return Number(Gmp.mpz(s));
+	return Number( NUMBER(s) );
       }
       if (a = symbol_re->split(buffer))
       {
@@ -751,7 +759,8 @@ object f_apply(object arglist, object env, object globals)
 
 object f_add(object arglist, object env, object globals)
 {
-  object sum = Gmp.mpz(0);
+  BIGNUM sum = NUMBER(0);
+
   while(arglist != Lempty)
   {
     if (!arglist->car->is_number)
@@ -764,7 +773,8 @@ object f_add(object arglist, object env, object globals)
 
 object f_mult(object arglist, object env, object globals)
 {
-  object product = Gmp.mpz(1);
+  BIGNUM product = NUMBER(1);
+
   while(arglist != Lempty)
   {
     if (!arglist->car->is_number)
@@ -778,7 +788,7 @@ object f_mult(object arglist, object env, object globals)
 object f_subtract(object arglist, object env, object globals)
 {
   if (arglist == Lempty)
-    return Number(Gmp.mpz(0));
+    return Number( NUMBER(0) );
 
   if (!arglist->car->is_number)
     return 0;
diff --git a/lib/modules/Protocols.pmod/LDAP.pmod/client.pike b/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
index 1a5e3403a2..ffd3aa250c 100644
--- a/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
+++ b/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
@@ -1,6 +1,6 @@
 // LDAP client protocol implementation for Pike.
 //
-// $Id: client.pike,v 1.2 1999/08/12 00:44:16 marcus Exp $
+// $Id: client.pike,v 1.3 1999/08/25 05:04:30 hubbe Exp $
 //
 // Honza Petrous, hop@unibase.cz
 //
@@ -58,6 +58,7 @@
 //	RFC 2307   (LDAP as network information services; draft?)
 
 
+#if constant(.ldap_privates.ldap_der_decode)
 
 #include "ldap_globals.h"
 
@@ -931,3 +932,4 @@
   } // modify
 
 
+#endif
diff --git a/lib/modules/Protocols.pmod/LDAP.pmod/ldap_privates.pmod b/lib/modules/Protocols.pmod/LDAP.pmod/ldap_privates.pmod
index 9f12c82cde..316629242a 100644
--- a/lib/modules/Protocols.pmod/LDAP.pmod/ldap_privates.pmod
+++ b/lib/modules/Protocols.pmod/LDAP.pmod/ldap_privates.pmod
@@ -1,6 +1,6 @@
 // LDAP client protocol implementation for Pike.
 //
-// $Id: ldap_privates.pmod,v 1.2 1999/08/12 00:44:16 marcus Exp $
+// $Id: ldap_privates.pmod,v 1.3 1999/08/25 05:04:32 hubbe Exp $
 //
 // Honza Petrous, hop@unibase.cz
 //
@@ -32,6 +32,8 @@
 // This is very poor defined own ASN.1 objects (not enough time to clean it!)
 //import Standards.ASN1.Encode;
 
+#if constant(Standards.ASN1.Types.asn1_integer)
+
 class asn1_enumerated
 {
   inherit Standards.ASN1.Types.asn1_integer;
@@ -255,5 +257,7 @@ object|mapping ldap_der_decode(string data)
   return der_decode(ADT.struct(data), ldap_type_proc);
 }
 
+#endif
+
 // ------------- end of ASN.1 API hack -----------------------------
 
diff --git a/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike b/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike
index a96afb56b2..6f32f65fc1 100644
--- a/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike
+++ b/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike
@@ -1,6 +1,6 @@
 // LDAP client protocol implementation for Pike.
 //
-// $Id: protocol.pike,v 1.1 1999/08/12 00:44:16 marcus fake $
+// $Id: protocol.pike,v 1.2 1999/08/25 05:04:33 hubbe Exp $
 //
 // Honza Petrous, hop@unibase.cz
 //
@@ -19,6 +19,8 @@
 //			 - added core for async operation
 //
 
+#if constant(Standards.ASN1.Types.asn1_integer)
+
 
 #include "ldap_globals.h"
 
@@ -468,3 +470,4 @@ DWRITE("protocol.async_timeout: ERROR: connection timeout.\n");
   }
 
 
+#endif
diff --git a/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod b/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod
index 640ab77c20..4c5df32ae8 100644
--- a/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod
+++ b/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod
@@ -13,6 +13,8 @@
  * FIXME: Handling of implicit and explicit ASN.1 tagging, as well as
  * other context dependence, is next to non_existant. */
 
+#if constant(Gmp.mpz)
+
 import .Types;
 
 class primitive
@@ -170,3 +172,5 @@ object|mapping simple_der_decode(string data)
 {
   return der_decode(ADT.struct(data), universal_types);
 }
+
+#endif
\ No newline at end of file
diff --git a/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod b/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
index 21d25cc1b0..4e5cab40b4 100644
--- a/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
+++ b/lib/modules/Standards.pmod/ASN1.pmod/Encode.pmod
@@ -11,6 +11,8 @@
 #define WERROR(x)
 #endif
 
+#if constant(Gmp.mpz)
+
 class asn1_object
 {
   constant cls = 0;
@@ -264,3 +266,5 @@ class asn1_utc
   inherit asn1_octet_string;
   constant tag = 23;
 }
+
+#endif
\ No newline at end of file
diff --git a/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod b/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod
index 1029317280..4ece669a28 100644
--- a/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod
+++ b/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod
@@ -7,6 +7,8 @@
 import ".";
 #endif /* __VERSION__ >= 0.6 */
 
+#if constant(Standards.ASN1.Types.asn1_identifier)
+
 import Standards.ASN1.Types;
 
 class CSR_Attributes
@@ -37,3 +39,5 @@ object build_csr_dsa(object dsa, object name)
   object info = asn1_sequence( ({ asn1_integer }) );
 }
 #endif
+
+#endif
\ No newline at end of file
diff --git a/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod b/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod
index 799259ed92..4c3f4f4f3a 100644
--- a/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod
+++ b/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod
@@ -128,6 +128,8 @@ Version ::= INTEGER
 import ".";
 #endif /* __VERSION__ >= 0.6 */
 
+#if constant(Standards.ASN1.Types.asn1_sequence)
+
 import Standards.ASN1.Types;
 import Identifiers;
 
@@ -204,3 +206,4 @@ class Attributes
     }
 }
       
+#endif
\ No newline at end of file
diff --git a/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod b/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod
index e8fa45e6e7..1a81a63f5d 100644
--- a/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod
+++ b/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod
@@ -7,6 +7,8 @@
 /* NOTE: Unlike the functions in RSA.pmod, this function returns
  * an object rather than a string. */
 
+#if constant(Gmp.mpz)
+
 import Standards.ASN1.Types;
 
 object algorithm_identifier(object|void dsa)
@@ -48,3 +50,5 @@ object parse_private_key(string key)
 
     return dsa;
 }
+
+#endif
diff --git a/lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod b/lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod
index d4e3317695..18166ee2f2 100644
--- a/lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod
+++ b/lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod
@@ -62,6 +62,8 @@
       2.5.4.53 - id-at-deltaRevocationList
 */
 
+#if constant(Standards.ASN1.Types.asn1_identifier)
+
 import Standards.ASN1.Types;
 
 object pkcs_id = asn1_identifier(1, 2, 840, 113549, 1);
@@ -204,3 +206,5 @@ object ad_id = pkix_id->append(48);
 
 mapping ad_ids =
 ([ "caIssuers" : ad_id->append(2) ]);
+
+#endif
\ No newline at end of file
diff --git a/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod b/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod
index 1bf59abc1c..e37d017b7f 100644
--- a/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod
+++ b/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod
@@ -12,6 +12,8 @@
 import ".";
 #endif /* __VERSION__ >= 0.6 */
 
+#if constant(Standards.ASN1.Decode.simple_der_decode)
+
 import Standards.ASN1.Types;
 
 /* Create a DER-coded RSAPublicKey structure */
@@ -87,3 +89,4 @@ object build_rsa_public_key(object rsa)
       ({ asn1_integer(rsa->n), asn1_integer(rsa->e) }) )->get_der()) }) );
 }
 
+#endif
\ No newline at end of file
diff --git a/lib/modules/Tools.pmod/X509.pmod b/lib/modules/Tools.pmod/X509.pmod
index 2b91dec6f5..59e1c37664 100644
--- a/lib/modules/Tools.pmod/X509.pmod
+++ b/lib/modules/Tools.pmod/X509.pmod
@@ -4,6 +4,8 @@
  *
  */
 
+#if constant(Standards.ASN1.Types.asn1_sequence)
+
 import Standards.ASN1.Types;
 import Standards.PKCS;
 
@@ -452,3 +454,5 @@ object verify_certificate(string s, mapping authorities)
 			cert->elements[2]->value)
     && tbs;
 }
+
+#endif
\ No newline at end of file
-- 
GitLab