From 8d2164a090f17286ea8291f30a123595cf447dc3 Mon Sep 17 00:00:00 2001
From: Haiqing Bai <Haiqing.Bai@windriver.com>
Date: Wed, 30 Nov 2016 10:27:36 +0800
Subject: [PATCH] crda: fix issues when 'USE_OPENSSL=1'.

Fxed the below issues if configured with 'USE_OPENSSL=1':
a. keys-ssl.c uses BN_ULONG but doesn't include the openssl headers leading
   to build failures:
   keys-ssl.c:2:8: error: unknown type name 'BN_ULONG'
   static BN_ULONG e_0[1] = {

b. The large unqualified constants also break building:
   keys-ssl.c:8:2: warning: overflow in implicit constant conversion [-Woverflow]
     0x63a2705416a0d8e1, 0xdc9fca11c8ba757b,

c. keys-ssl.c: error: 'keys' defined but not used [-Werror=unused-variable]
   static struct pubkey keys[] = {

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Upstream-Status: Pending
Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
---
 utils/key2pub.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/utils/key2pub.py b/utils/key2pub.py
index 401d58a..3ae00b8 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -24,7 +24,7 @@ def print_ssl_64(output, name, val):
     for v1, v2, v3, v4, v5, v6, v7, v8 in vnew:
         if not idx:
             output.write('\t')
-        output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
+        output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2xULL, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
         idx += 1
         if idx == 2:
             idx = 0
@@ -60,6 +60,7 @@ def print_ssl_32(output, name, val):
 def print_ssl(output, name, val):
     import os
     output.write('#include <stdint.h>\n')
+    output.write('#include <openssl/bn.h>\n')
     if os.getenv('TARGET_BITS') == '64':
         return print_ssl_64(output, name, val)
     else:
@@ -78,7 +79,7 @@ struct pubkey {
 
 #define KEYS(e,n)	{ KEY(e), KEY(n), }
 
-static struct pubkey keys[] = {
+static struct pubkey keys[] __attribute__((unused))= {
 ''')
     for n in xrange(n + 1):
         output.write('	KEYS(e_%d, n_%d),\n' % (n, n))
-- 
1.9.1

