|
Panu Matilainen |
271f69 |
diff -up rpm-4.4.2.2/rpmio/digest.c.nss-init rpm-4.4.2.2/rpmio/digest.c
|
|
Panu Matilainen |
77f9b1 |
--- rpm-4.4.2.2/rpmio/digest.c.nss-init 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
77f9b1 |
+++ rpm-4.4.2.2/rpmio/digest.c 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
271f69 |
@@ -78,9 +78,6 @@ rpmDigestInit(pgpHashAlgo hashalgo, rpmD
|
|
Panu Matilainen |
271f69 |
HASH_HashType type;
|
|
Panu Matilainen |
271f69 |
DIGEST_CTX ctx = xcalloc(1, sizeof(*ctx));
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
- if (NSS_NoDB_Init(NULL) != SECSuccess)
|
|
Panu Matilainen |
271f69 |
- return NULL;
|
|
Panu Matilainen |
271f69 |
-
|
|
Panu Matilainen |
271f69 |
ctx->flags = flags;
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
type = getHashType(hashalgo);
|
|
Panu Matilainen |
271f69 |
diff -up rpm-4.4.2.2/rpmio/rpmpgp.h.nss-init rpm-4.4.2.2/rpmio/rpmpgp.h
|
|
Panu Matilainen |
77f9b1 |
--- rpm-4.4.2.2/rpmio/rpmpgp.h.nss-init 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
77f9b1 |
+++ rpm-4.4.2.2/rpmio/rpmpgp.h 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
271f69 |
@@ -1380,6 +1380,15 @@ unsigned int pgpCRC(const byte *octets,
|
|
Panu Matilainen |
271f69 |
}
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
/** \ingroup rpmio
|
|
Panu Matilainen |
271f69 |
+ * Perform cryptography initialization.
|
|
Panu Matilainen |
271f69 |
+ * It must be called before any cryptography can be used within rpm.
|
|
Panu Matilainen |
271f69 |
+ * It's not normally necessary to call it directly as it's called in
|
|
Panu Matilainen |
271f69 |
+ * general rpm initialization routines.
|
|
Panu Matilainen |
271f69 |
+ * @return 0 on success, -1 on failure
|
|
Panu Matilainen |
271f69 |
+ */
|
|
Panu Matilainen |
271f69 |
+int rpmInitCrypto(void);
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
+/** \ingroup rpmio
|
|
Panu Matilainen |
271f69 |
* Duplicate a digest context.
|
|
Panu Matilainen |
271f69 |
* @param octx existing digest context
|
|
Panu Matilainen |
271f69 |
* @return duplicated digest context
|
|
Panu Matilainen |
271f69 |
diff -up rpm-4.4.2.2/rpmio/rpmpgp.c.nss-init rpm-4.4.2.2/rpmio/rpmpgp.c
|
|
Panu Matilainen |
77f9b1 |
--- rpm-4.4.2.2/rpmio/rpmpgp.c.nss-init 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
77f9b1 |
+++ rpm-4.4.2.2/rpmio/rpmpgp.c 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
271f69 |
@@ -17,6 +17,8 @@ static int _debug = 0;
|
|
Panu Matilainen |
271f69 |
/*@unchecked@*/
|
|
Panu Matilainen |
271f69 |
static int _print = 0;
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
+static int _crypto_initialized = 0;
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
/*@unchecked@*/ /*@null@*/
|
|
Panu Matilainen |
271f69 |
static pgpDig _dig = NULL;
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
@@ -1094,7 +1096,6 @@ int pgpPrtPkt(const byte *pkt, unsigned
|
|
Panu Matilainen |
271f69 |
pgpDig pgpNewDig(void)
|
|
Panu Matilainen |
271f69 |
{
|
|
Panu Matilainen |
271f69 |
pgpDig dig = xcalloc(1, sizeof(*dig));
|
|
Panu Matilainen |
271f69 |
- NSS_NoDB_Init(NULL);
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
return dig;
|
|
Panu Matilainen |
271f69 |
}
|
|
Panu Matilainen |
271f69 |
@@ -1404,5 +1405,18 @@ char * pgpArmorWrap(int atype, const uns
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
return val;
|
|
Panu Matilainen |
271f69 |
}
|
|
Panu Matilainen |
271f69 |
-
|
|
Panu Matilainen |
271f69 |
/*@=boundsread@*/
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
+int rpmInitCrypto(void) {
|
|
Panu Matilainen |
271f69 |
+ int rc = 0;
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
+ if (!_crypto_initialized && NSS_NoDB_Init(NULL) != SECSuccess) {
|
|
Panu Matilainen |
271f69 |
+ rc = -1;
|
|
Panu Matilainen |
271f69 |
+ } else {
|
|
Panu Matilainen |
271f69 |
+ _crypto_initialized = 1;
|
|
Panu Matilainen |
271f69 |
+ }
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
+ return rc;
|
|
Panu Matilainen |
271f69 |
+}
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
271f69 |
+
|
|
Panu Matilainen |
77f9b1 |
diff -up rpm-4.4.2.2/tools/debugedit.c.nss-init rpm-4.4.2.2/tools/debugedit.c
|
|
Panu Matilainen |
77f9b1 |
--- rpm-4.4.2.2/tools/debugedit.c.nss-init 2007-11-15 15:01:42.000000000 +0200
|
|
Panu Matilainen |
77f9b1 |
+++ rpm-4.4.2.2/tools/debugedit.c 2007-11-15 15:02:23.000000000 +0200
|
|
Panu Matilainen |
77f9b1 |
@@ -1318,6 +1318,8 @@ handle_build_id (DSO *dso, Elf_Data *bui
|
|
Panu Matilainen |
77f9b1 |
void *digest = NULL;
|
|
Panu Matilainen |
77f9b1 |
size_t len;
|
|
Panu Matilainen |
77f9b1 |
|
|
Panu Matilainen |
77f9b1 |
+ rpmInitCrypto();
|
|
Panu Matilainen |
77f9b1 |
+
|
|
Panu Matilainen |
77f9b1 |
while (i-- > 0)
|
|
Panu Matilainen |
77f9b1 |
{
|
|
Panu Matilainen |
77f9b1 |
algorithm = algorithms[i];
|
|
Panu Matilainen |
271f69 |
diff -up rpm-4.4.2.2/lib/rpmrc.c.nss-init rpm-4.4.2.2/lib/rpmrc.c
|
|
Panu Matilainen |
271f69 |
--- rpm-4.4.2.2/lib/rpmrc.c.nss-init 2007-09-11 09:28:15.000000000 +0300
|
|
Panu Matilainen |
77f9b1 |
+++ rpm-4.4.2.2/lib/rpmrc.c 2007-11-15 15:00:41.000000000 +0200
|
|
Panu Matilainen |
271f69 |
@@ -1850,6 +1850,10 @@ static int rpmReadRC(/*@null@*/ const ch
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
int rpmReadConfigFiles(const char * file, const char * target)
|
|
Panu Matilainen |
271f69 |
{
|
|
Panu Matilainen |
271f69 |
+ /* Initialize crypto engine as early as possible */
|
|
Panu Matilainen |
271f69 |
+ if (rpmInitCrypto() < 0) {
|
|
Panu Matilainen |
271f69 |
+ return -1;
|
|
Panu Matilainen |
271f69 |
+ }
|
|
Panu Matilainen |
271f69 |
|
|
Panu Matilainen |
271f69 |
/* Preset target macros */
|
|
Panu Matilainen |
271f69 |
/*@-nullstate@*/ /* FIX: target can be NULL */
|