From 7fa8d6b0f73e082b2d29aacbc38b122db0ad644d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Thu, 14 Aug 2014 16:44:38 +0200
Subject: [PATCH] Crypto.RSA: Break compilation circularity.

There's a circularity between Crypto.RSA and Standards.PKCS.RSA.
---
 lib/modules/Crypto.pmod/RSA.pmod | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Crypto.pmod/RSA.pmod b/lib/modules/Crypto.pmod/RSA.pmod
index 8e62468719..b6c11a02a1 100644
--- a/lib/modules/Crypto.pmod/RSA.pmod
+++ b/lib/modules/Crypto.pmod/RSA.pmod
@@ -264,18 +264,25 @@ class State {
 
 #define Sequence Standards.ASN1.Types.Sequence
 
+  private class PKCS_RSA_class {
+    Sequence signature_algorithm_id(.Hash);
+    Sequence build_public_key(global::State);
+  }
+  private object(PKCS_RSA_class) PKCS_RSA =
+    [object(PKCS_RSA_class)]Standards.PKCS["RSA"];
+
   //! Calls @[Standards.PKCS.RSA.signatue_algorithm_id] with the
   //! provided @[hash].
   Sequence pkcs_signature_algorithm_id(.Hash hash)
   {
-    return [object(Sequence)]Standards.PKCS.RSA->signature_algorithm_id(hash);
+    return PKCS_RSA->signature_algorithm_id(hash);
   }
 
   //! Calls @[Standards.PKCS.RSA.build_public_key] with this object as
   //! argument.
   Sequence pkcs_public_key()
   {
-    return [object(Sequence)]Standards.PKCS.RSA->build_public_key(this);
+    return PKCS_RSA->build_public_key(this);
   }
 
 #undef Sequence
-- 
GitLab