dev-libs/rsaref: initial import

Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
This commit is contained in:
Anna (cybertailor) Vyalkova
2021-12-29 15:37:14 +05:00
parent fd7f2d35ea
commit 5bfe94c0f2
7 changed files with 311 additions and 0 deletions

1
dev-libs/rsaref/Manifest Normal file
View File

@@ -0,0 +1 @@
DIST rsaref-2.0.tar.Z 144092 BLAKE2B 341dc102e01ffad31386e1a0f9a60bb20ced4cdf385faaff2fee3efbdc90721d2b1e17e045bb8ad2c1ac86d55ba28aafe2c94d9dbecf99dbef11724a6e5848e5 SHA512 70cf6fe7bbf91ab5b5e09af02e8a9b732d94f1126df720fcdf23fb6f5b4d46515573cb18241eb7354c9a40faadfcf30942044cd4a3a8507de6c783fadec03422

View File

@@ -0,0 +1,47 @@
--- a/source/global.h
+++ b/source/global.h
@@ -7,23 +7,17 @@
#ifndef _GLOBAL_H_
#define _GLOBAL_H_ 1
-/* PROTOTYPES should be set to one if and only if the compiler supports
- function argument prototyping.
- The following makes PROTOTYPES default to 1 if it has not already been
- defined as 0 with C compiler flags.
- */
-#ifndef PROTOTYPES
-#define PROTOTYPES 1
-#endif
+#include <sys/types.h>
+#include <sys/cdefs.h>
/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
+typedef caddr_t POINTER;
/* UINT2 defines a two byte word */
-typedef unsigned short int UINT2;
+typedef u_int16_t UINT2;
/* UINT4 defines a four byte word */
-typedef unsigned long int UINT4;
+typedef u_int32_t UINT4;
#ifndef NULL_PTR
#define NULL_PTR ((POINTER)0)
@@ -33,14 +27,6 @@
#define UNUSED_ARG(x) x = *(&x);
#endif
-/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
- If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
- returns an empty list.
- */
-#if PROTOTYPES
-#define PROTO_LIST(list) list
-#else
-#define PROTO_LIST(list) ()
-#endif
+#define PROTO_LIST(x) __P(x)
#endif /* end _GLOBAL_H_ */

View File

@@ -0,0 +1,72 @@
--- a/source/des.h
+++ b/source/des.h
@@ -4,6 +4,8 @@
#ifndef _DES_H_
#define _DES_H_ 1
+#include <rsaref/global.h>
+
#ifdef __cplusplus
extern "C" {
#endif
--- a/source/md2.h
+++ b/source/md2.h
@@ -22,6 +22,8 @@
#ifndef _MD2_H_
#define _MD2_H_ 1
+#include <rsaref/global.h>
+
#ifdef __cplusplus
extern "C" {
#endif
--- a/source/r_random.c
+++ b/source/r_random.c
@@ -8,7 +8,7 @@
#include "global.h"
#include "rsaref.h"
#include "r_random.h"
-#include "md5.h"
+#include <rsaref/md5.h>
#define RANDOM_BYTES_NEEDED 256
--- a/source/rsa.h
+++ b/source/rsa.h
@@ -5,6 +5,11 @@
Inc., created 1991. All rights reserved.
*/
+#ifndef _RSA_H_
+#define _RSA_H_ 1
+
+#include <rsaref/global.h>
+
int RSAPublicEncrypt PROTO_LIST
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
R_RSA_PUBLIC_KEY *, R_RANDOM_STRUCT *));
@@ -17,3 +22,5 @@
int RSAPrivateDecrypt PROTO_LIST
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
R_RSA_PRIVATE_KEY *));
+
+#endif
$NetBSD: patch-af,v 1.2 1998/08/07 11:13:48 agc Exp $
--- a/source/rsaref.h
+++ b/source/rsaref.h
@@ -8,9 +8,9 @@
#ifndef _RSAREF_H_
#define _RSAREF_H_ 1
-#include "md2.h"
-#include "md5.h"
-#include "des.h"
+#include <rsaref/md2.h>
+#include <rsaref/md5.h>
+#include <rsaref/des.h>
#ifdef __cplusplus
extern "C" {

View File

@@ -0,0 +1,44 @@
--- a/install/unix/makefile
+++ b/install/unix/makefile
@@ -4,8 +4,7 @@
O = o
# commands
-CC = cc
-LIB = ar
+CC := ${LIBTOOL} --tag=CC --mode=compile ${CC}
# name of temporary library script
TEMPFILE = $(TEMP)/temp.mak
@@ -14,18 +13,18 @@
STDINCDIR=/usr/include
# The places to look for include files (in order).
-INCL = -I. -I$(RSAREFDIR) -I$(STDINCDIR)
+INCL = -I. -I$(RSAREFDIR)
# name of main executable to build
PROG = all
# Normal C flags.
-CFLAGS = $(INCL) -O -c -DPROTOTYPES=1
+CFLAGS += $(INCL) -c -DPROTOTYPES=1
MFLAGS = -I. -I$(RSAREFDIR)
# The location of the common source directory.
RSAREFDIR = ../source/
-RSAREFLIB = rsaref.a
+RSAREFLIB = librsaref.la
# The location of the demo source directory.
RDEMODIR = ../rdemo/
@@ -41,8 +40,7 @@
$(RSAREFLIB) : desc.$(O) digit.$(O) md2c.$(O) md5c.$(O) nn.$(O) prime.$(O)\
rsa.$(O) r_encode.$(O) r_dh.$(O) r_enhanc.$(O) r_keygen.$(O) r_random.$(O)\
r_stdlib.$(O)
- $(LIB) r $@ $?
- ranlib $@
+ ${LIBTOOL} --tag=CC --mode=link cc -o $@ ${?:.o=.lo} -rpath ${LIBDIR} -version-info 3:0 ${LDFLAGS}
rdemo.$(O) : $(RDEMODIR)rdemo.c $(RSAREFDIR)global.h $(RSAREFDIR)rsaref.h
$(CC) $(CFLAGS) $(RDEMODIR)rdemo.c

View File

@@ -0,0 +1,73 @@
--- a/source/rsa.c
+++ b/source/rsa.c
@@ -11,10 +11,10 @@
#include "rsa.h"
#include "nn.h"
-static int RSAPublicBlock PROTO_LIST
+int RSAPublicBlock PROTO_LIST
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
R_RSA_PUBLIC_KEY *));
-static int RSAPrivateBlock PROTO_LIST
+int RSAPrivateBlock PROTO_LIST
((unsigned char *, unsigned int *, unsigned char *, unsigned int,
R_RSA_PRIVATE_KEY *));
@@ -33,6 +33,9 @@
unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN];
unsigned int i, modulusLen;
+ if (inputLen+3>MAX_RSA_MODULUS_LEN) return (RE_LEN);
+ if (publicKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
+
modulusLen = (publicKey->bits + 7) / 8;
if (inputLen + 11 > modulusLen)
return (RE_LEN);
@@ -78,6 +81,9 @@
unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
unsigned int i, modulusLen, pkcsBlockLen;
+ if (inputLen>MAX_RSA_MODULUS_LEN) return (RE_LEN);
+ if (publicKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
+
modulusLen = (publicKey->bits + 7) / 8;
if (inputLen > modulusLen)
return (RE_LEN);
@@ -129,6 +135,9 @@
unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
unsigned int i, modulusLen;
+ if (inputLen+3>MAX_RSA_MODULUS_LEN) return (RE_LEN);
+ if (privateKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
+
modulusLen = (privateKey->bits + 7) / 8;
if (inputLen + 11 > modulusLen)
return (RE_LEN);
@@ -168,6 +177,9 @@
unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
unsigned int i, modulusLen, pkcsBlockLen;
+ if (inputLen>MAX_RSA_MODULUS_LEN) return (RE_LEN);
+ if (privateKey->bits > MAX_RSA_MODULUS_BITS) return (RE_LEN);
+
modulusLen = (privateKey->bits + 7) / 8;
if (inputLen > modulusLen)
return (RE_LEN);
@@ -212,7 +224,7 @@
Assumes inputLen < length of modulus.
Requires input < modulus.
*/
-static int RSAPublicBlock (output, outputLen, input, inputLen, publicKey)
+int RSAPublicBlock (output, outputLen, input, inputLen, publicKey)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block */
unsigned char *input; /* input block */
@@ -252,7 +264,7 @@
Assumes inputLen < length of modulus.
Requires input < modulus.
*/
-static int RSAPrivateBlock (output, outputLen, input, inputLen, privateKey)
+int RSAPrivateBlock (output, outputLen, input, inputLen, privateKey)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block */
unsigned char *input; /* input block */

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>cyber+gentoo@sysrq.in</email>
<name>Anna</name>
</maintainer>
<longdescription>
RSAREF is a free, portable software developer's library of popular
encryption and authentication algorithms. The name "RSAREF" means
"RSA reference." RSA Laboratories intends RSAREF to serve as a free,
educational reference implementation of modern public- and secret-key
cryptography.
RSAREF 2.0 supports the following algorithms:
o RSA encryption and key generation, as defined by RSA
Laboratories' Public-Key Cryptography Standards (PKCS)
o MD2 and MD5 message digests
o DES (Data Encryption Standard) in cipher-block chaining mode
o Diffie-Hellman key agreement
o DESX, RSA Data Security's efficient, secure DES enhancement
o Triple-DES, for added security with three DES operations
</longdescription>
</pkgmetadata>

View File

@@ -0,0 +1,44 @@
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Encryption/authentication library, RSA/MDX/DES"
HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
SRC_URI="https://archive.netbsd.org/pub/pkgsrc-archive/distfiles/2021Q3/${PN}.tar.Z -> ${P}.tar.Z"
S="${WORKDIR}"
LICENSE="RSAREF"
SLOT="0/3"
KEYWORDS="~amd64"
BDEPEND="sys-devel/libtool"
PATCHES=(
"${FILESDIR}"/${P}-global.patch
"${FILESDIR}"/${P}-includes.patch
"${FILESDIR}"/${P}-libtool.patch
"${FILESDIR}"/${P}-rsa.patch
)
DOCS=( doc )
src_unpack() {
default
cd "${S}"/source || die
mkdir ${PN} || die
cp *.h ${PN} || die
}
src_compile() {
# XXX: fails with slibtool
emake -C install -f unix/makefile librsaref.la \
LIBTOOL=libtool LIBDIR="${EPREFIX}/usr/$(get_libdir)"
}
src_install() {
dolib.so install/.libs/lib${PN}.so*
doheader -r source/${PN}
einstalldocs
}