From 8715b098d4d5a2ddb491ca65889a1edde9e2cabf Mon Sep 17 00:00:00 2001 From: Pushkar Kulkarni Date: Sat, 28 Feb 2026 10:32:24 +0530 Subject: [PATCH] Use KeyConverter to simplify SignatureTest The SignatureTest used a JNI library named libsigtest.so to create RSA keys. The newly added KeyConverter class lets us convert RSA keys created by the JCE provider to OpenSSLKeys. This removes the libsigtest dependency. The PEM files used to create some of the keys are also no longer needed. --- Makefile | 6 +- src/test/java/SignatureTest.java | 90 ++++------ src/test/java/native/RSAKeyPairGenerator.c | 77 -------- src/test/java/native/RSAKeyPairGenerator.h | 37 ---- src/test/java/native/RSAPrivateKey.c | 35 ---- src/test/java/native/RSAPrivateKey.h | 37 ---- src/test/java/native/RSAPublicKey.c | 34 ---- src/test/java/native/RSAPublicKey.h | 37 ---- src/test/keys/rsa16384-priv.pem | 195 --------------------- src/test/keys/rsa16384-pub.pem | 45 ----- src/test/keys/rsa4096-priv.pem | 51 ------ src/test/keys/rsa4096-pub.pem | 13 -- src/test/keys/rsa8192-priv.pem | 99 ----------- src/test/keys/rsa8192-pub.pem | 24 --- 14 files changed, 35 insertions(+), 745 deletions(-) delete mode 100644 src/test/java/native/RSAKeyPairGenerator.c delete mode 100644 src/test/java/native/RSAKeyPairGenerator.h delete mode 100644 src/test/java/native/RSAPrivateKey.c delete mode 100644 src/test/java/native/RSAPrivateKey.h delete mode 100644 src/test/java/native/RSAPublicKey.c delete mode 100644 src/test/java/native/RSAPublicKey.h delete mode 100644 src/test/keys/rsa16384-priv.pem delete mode 100644 src/test/keys/rsa16384-pub.pem delete mode 100644 src/test/keys/rsa4096-priv.pem delete mode 100644 src/test/keys/rsa4096-pub.pem delete mode 100644 src/test/keys/rsa8192-priv.pem delete mode 100644 src/test/keys/rsa8192-pub.pem diff --git a/Makefile b/Makefile index 80d38bc..d3649fd 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,6 @@ TEST_JAVA_DIR := ${TOPDIR}/src/test/java TEST_JAVA_SRCS := $(wildcard $(addsuffix /*.java, $(TEST_JAVA_DIR))) TEST_NAT_SRCS := $(wildcard $(addsuffix /*.c, $(TEST_JAVA_DIR)/native)) TESTOBJS := $(patsubst $(TEST_JAVA_DIR)/native/%.c, $(TEST_BIN)/%.o, $(TEST_NAT_SRCS)) -TESTLIB := $(BUILD)/test/bin/libsigtest.so LIBPATH := $(BUILD)/bin:${TOPDIR}/build/test/bin @@ -79,9 +78,6 @@ $(BUILD)/test/bin/%.o: $(TEST_JAVA_DIR)/native/%.c $(SOLIB): $(OBJS) @cc ${LDFLAGS} -o $@ $^ -L/usr/local/lib64 -lcrypto -lssl -$(TESTLIB): $(TESTOBJS) - @cc -shared -fPIC -Wl,-soname,libsigtest.so -o $@ $^ -L/usr/local/lib64 -L$(BUILD)/bin -lcrypto -lssl -ljssl - $(TEST_BIN)/%: $(TEST_C_DIR)/%.c @cc $(TEST_CFLAGS) -o $@ $< -ljssl -lcrypto @@ -90,7 +86,7 @@ gen-code: solib: $(BUILD)/bin $(SOLIB) -test-solib: $(BUILD)/test/bin $(TESTLIB) $(TEST_C_OBJS) +test-solib: $(BUILD)/test/bin $(TEST_C_OBJS) @LD_LIBRARY_PATH=$(BUILD)/bin:$(BUILD)/test LIBPATH=${LIBPATH} src/test/runner.py clean: diff --git a/src/test/java/SignatureTest.java b/src/test/java/SignatureTest.java index 34e2174..4f2bc3f 100644 --- a/src/test/java/SignatureTest.java +++ b/src/test/java/SignatureTest.java @@ -18,6 +18,7 @@ import com.canonical.openssl.key.OpenSSLKey; import com.canonical.openssl.key.OpenSSLPublicKey; import com.canonical.openssl.key.OpenSSLPrivateKey; +import com.canonical.openssl.key.KeyConverter; import java.security.PublicKey; import java.security.PrivateKey; import java.util.Arrays; @@ -25,6 +26,8 @@ import java.security.spec.AlgorithmParameterSpec; import java.security.AlgorithmParameters; import java.security.InvalidKeyException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; @@ -39,9 +42,6 @@ import static org.junit.Assert.assertFalse; public class SignatureTest { - static { - System.loadLibrary("sigtest"); - } static String message = "Apollo is one of the Olympian deities in classical " + "Greek and Roman religion and Greek and Roman mythology. Apollo " @@ -56,11 +56,10 @@ public class SignatureTest { @Test public void testRSABasic() throws Exception { - RSAKeyPairGenerator gen = new RSAKeyPairGenerator(); - gen.generateKeyPair(); - - PublicKey publicKey = gen.pubKey; - PrivateKey privateKey = gen.privKey; + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -77,8 +76,11 @@ public void testRSABasic() throws Exception { @Test public void testRSAwithMultipleUpdates() throws Exception { - PublicKey publicKey = new RSAPublicKey("src/test/keys/rsa16384-pub.pem"); - PrivateKey privateKey = new RSAPrivateKey("src/test/keys/rsa16384-priv.pem"); + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + gen.initialize(4096); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -99,11 +101,10 @@ public void testRSAwithMultipleUpdates() throws Exception { @Test public void testRSAsingleByteUpdates() throws Exception { - RSAKeyPairGenerator gen = new RSAKeyPairGenerator(); - gen.generateKeyPair(); - - PublicKey publicKey = gen.pubKey; - PrivateKey privateKey = gen.privKey; + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -123,8 +124,11 @@ public void testRSAsingleByteUpdates() throws Exception { @Test public void testRSAmultipleByteBufferUpdates() throws Exception { - PublicKey publicKey = new RSAPublicKey("src/test/keys/rsa8192-pub.pem"); - PrivateKey privateKey = new RSAPrivateKey("src/test/keys/rsa8192-priv.pem"); + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + gen.initialize(8192); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -141,8 +145,11 @@ public void testRSAmultipleByteBufferUpdates() throws Exception { @Test public void testRSAsignNonzeroOffset() throws Exception { - PublicKey publicKey = new RSAPublicKey("src/test/keys/rsa4096-pub.pem"); - PrivateKey privateKey = new RSAPrivateKey("src/test/keys/rsa4096-priv.pem"); + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + gen.initialize(4096); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); byte[] sigBytes = new byte[612]; Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); @@ -160,11 +167,10 @@ public void testRSAsignNonzeroOffset() throws Exception { @Test public void testRSAtamperedSignature() throws Exception { - RSAKeyPairGenerator gen = new RSAKeyPairGenerator(); - gen.generateKeyPair(); - - PublicKey publicKey = gen.pubKey; - PrivateKey privateKey = gen.privKey; + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -187,11 +193,11 @@ public void testRSAtamperedSignature() throws Exception { @Test public void testRSAtamperedContent() throws Exception { - RSAKeyPairGenerator gen = new RSAKeyPairGenerator(); - gen.generateKeyPair(); + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPair kp = gen.generateKeyPair(); + PublicKey publicKey = new RSAPublicKey(KeyConverter.publicKeyToEVPKey(kp.getPublic())); + PrivateKey privateKey = new RSAPrivateKey(KeyConverter.privateKeyToEVPKey(kp.getPrivate())); - PublicKey publicKey = gen.pubKey; - PrivateKey privateKey = gen.privKey; Signature signer = Signature.getInstance("RSAwithSHA256", "OpenSSLFIPSProvider"); signer.initSign(privateKey); @@ -238,15 +244,9 @@ public RSAPublicKey(long nativeKey) { this.nativeKey = nativeKey; } - public RSAPublicKey(String filename) { - this.nativeKey = readPubKeyFromPem0(filename); - } - public long getNativeKeyHandle() { return nativeKey; } - - native long readPubKeyFromPem0(String filename); } class RSAPrivateKey extends TestKey implements OpenSSLPrivateKey { @@ -256,29 +256,7 @@ public RSAPrivateKey(long nativeKey) { this.nativeKey = nativeKey; } - public RSAPrivateKey(String filename) { - this.nativeKey = readPrivKeyFromPem0(filename); - } - public long getNativeKeyHandle() { return nativeKey; } - - native long readPrivKeyFromPem0(String filename); -} - -class RSAKeyPairGenerator { - long nativePrivKey = 0; - long nativePubKey = 0; - - RSAPrivateKey privKey; - RSAPublicKey pubKey; - - public void generateKeyPair() { - generateKeyPair0(); - privKey = new RSAPrivateKey(nativePrivKey); - pubKey = new RSAPublicKey(nativePubKey); - } - - private native void generateKeyPair0(); } diff --git a/src/test/java/native/RSAKeyPairGenerator.c b/src/test/java/native/RSAKeyPairGenerator.c deleted file mode 100644 index 2301e1a..0000000 --- a/src/test/java/native/RSAKeyPairGenerator.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#include -#include "jssl.h" -#include -#include -#include -#include -#include - -# define TEST_ptr(a) (a) -# define TEST_true(a) ((a) != 0) - -int rsa_keygen(OSSL_LIB_CTX *libctx, int bits, EVP_PKEY **pub, EVP_PKEY **priv) -{ - int ret = 0; - unsigned char *pub_der = NULL; - const unsigned char *pp = NULL; - size_t len = 0; - OSSL_ENCODER_CTX *ectx = NULL; - - if (!TEST_ptr(*priv = EVP_PKEY_Q_keygen(libctx, NULL, "RSA", bits)) - || !TEST_ptr(ectx = - OSSL_ENCODER_CTX_new_for_pkey(*priv, - EVP_PKEY_PUBLIC_KEY, - "DER", "type-specific", - NULL)) - || !TEST_true(OSSL_ENCODER_to_data(ectx, &pub_der, &len))) - goto err; - pp = pub_der; - if (NULL == (d2i_PublicKey(EVP_PKEY_RSA, pub, &pp, len))) - goto err; - ret = 1; -err: - OSSL_ENCODER_CTX_free(ectx); - OPENSSL_free(pub_der); - return ret; -} - -/* - * Class: RSAKeyPairGenerator - * Method: generateKeyPair0 - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_RSAKeyPairGenerator_generateKeyPair0 - (JNIEnv *env, jobject this) { - OSSL_LIB_CTX *libctx = load_openssl_fips_provider("/usr/local/ssl/openssl.cnf"); - EVP_PKEY *public_key = NULL; - EVP_PKEY *private_key = NULL; - rsa_keygen(libctx, 4096, &public_key, &private_key); - - // set public key in Java object - jclass clazz = (*env)->GetObjectClass(env, this); - jfieldID id1 = (*env)->GetFieldID(env, clazz, "nativePrivKey", "J"); - (*env)->SetLongField(env, this, id1, (jlong)private_key); - - // set private key in Java object - jfieldID id2 = (*env)->GetFieldID(env, clazz, "nativePubKey", "J"); - (*env)->SetLongField(env, this, id2, (jlong)public_key); -} - - - diff --git a/src/test/java/native/RSAKeyPairGenerator.h b/src/test/java/native/RSAKeyPairGenerator.h deleted file mode 100644 index 311e6e0..0000000 --- a/src/test/java/native/RSAKeyPairGenerator.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class RSAKeyPairGenerator */ - -#ifndef _Included_RSAKeyPairGenerator -#define _Included_RSAKeyPairGenerator -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: RSAKeyPairGenerator - * Method: generateKeyPair0 - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_RSAKeyPairGenerator_generateKeyPair0 - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/test/java/native/RSAPrivateKey.c b/src/test/java/native/RSAPrivateKey.c deleted file mode 100644 index 8f1656f..0000000 --- a/src/test/java/native/RSAPrivateKey.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#include -#include "jssl.h" -#include -#include -#include - -/* - * Class: RSAPrivateKey - * Method: readPrivKeyFromPem0 - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_RSAPrivateKey_readPrivKeyFromPem0 - (JNIEnv *env, jobject this, jstring filename) { - OSSL_LIB_CTX *libctx = load_openssl_fips_provider("/usr/local/ssl/openssl.cnf"); - char *c_filename = (char*)(*env)->GetStringUTFChars(env, filename, 0); - FILE *pemfile = fopen(c_filename, "r"); - return (jlong)PEM_read_PrivateKey_ex(pemfile, NULL, NULL, NULL, libctx, NULL); -} - diff --git a/src/test/java/native/RSAPrivateKey.h b/src/test/java/native/RSAPrivateKey.h deleted file mode 100644 index b72d41d..0000000 --- a/src/test/java/native/RSAPrivateKey.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class RSAPrivateKey */ - -#ifndef _Included_RSAPrivateKey -#define _Included_RSAPrivateKey -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: RSAPrivateKey - * Method: readPrivKeyFromPem0 - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_RSAPrivateKey_readPrivKeyFromPem0 - (JNIEnv *, jobject, jstring); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/test/java/native/RSAPublicKey.c b/src/test/java/native/RSAPublicKey.c deleted file mode 100644 index 0cb52e3..0000000 --- a/src/test/java/native/RSAPublicKey.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#include -#include "jssl.h" -#include -#include -#include - -/* - * Class: RSAPublicKey - * Method: readPubKeyFromPem0 - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_RSAPublicKey_readPubKeyFromPem0 - (JNIEnv *env, jobject this, jstring filename) { - OSSL_LIB_CTX *libctx = load_openssl_fips_provider("/usr/local/ssl/openssl.cnf"); - char *c_filename = (char*)(*env)->GetStringUTFChars(env, filename, 0); - FILE *pemfile = fopen(c_filename, "r"); - return (jlong)PEM_read_PUBKEY_ex(pemfile, NULL, NULL, NULL, libctx, NULL); -} diff --git a/src/test/java/native/RSAPublicKey.h b/src/test/java/native/RSAPublicKey.h deleted file mode 100644 index 6363d5d..0000000 --- a/src/test/java/native/RSAPublicKey.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) Canonical, Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class RSAPublicKey */ - -#ifndef _Included_RSAPublicKey -#define _Included_RSAPublicKey -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: RSAPublicKey - * Method: readPubKeyFromPem0 - * Signature: (Ljava/lang/String;)J - */ -JNIEXPORT jlong JNICALL Java_RSAPublicKey_readPubKeyFromPem0 - (JNIEnv *, jobject, jstring); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/test/keys/rsa16384-priv.pem b/src/test/keys/rsa16384-priv.pem deleted file mode 100644 index 07b26bc..0000000 --- a/src/test/keys/rsa16384-priv.pem +++ /dev/null @@ -1,195 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/src/test/keys/rsa16384-pub.pem b/src/test/keys/rsa16384-pub.pem deleted file mode 100644 index 0861ea8..0000000 --- a/src/test/keys/rsa16384-pub.pem +++ /dev/null @@ -1,45 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -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 ------END RSA PUBLIC KEY----- diff --git a/src/test/keys/rsa4096-priv.pem b/src/test/keys/rsa4096-priv.pem deleted file mode 100644 index bf61ff9..0000000 --- a/src/test/keys/rsa4096-priv.pem +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/src/test/keys/rsa4096-pub.pem b/src/test/keys/rsa4096-pub.pem deleted file mode 100644 index 890b5a4..0000000 --- a/src/test/keys/rsa4096-pub.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -MIICCgKCAgEAyffCsCX+I6ZLEgTI1kg18BF1kxEPiB1XY5Iv3ifPzSkOtObUYVAE -DIaYnwJNW/GPqmpo0N2Xh4c3GjdhMuE0jdK3qNoUXpbd4trO7l1GkXZfaw2XE1z1 -xclfF3ayYoPpzI4LI5vQ0FiZemWnozxb2n6+MnavDf/t2kxIbp6o1m9D1VQU2dY+ -fUFBx6QkCRtZvHPSRy6RIlpgmFh86EE7eQnp7sMoeoqn6MfzHJ170G3CldXD1pIB -yvJQ9UxRh8zfqRTP8t/mn4bcrKgCd6ubXs22BKKc9GgQCwzc5WpMxB6CXJyaYlJp -mc+M96hB0hfHR3UfSffGFANSIvbuTAQwK84vZ5XQKuCzi6PCZ3r8tLmH8ILBnIe0 -9wCjxpR26AXHvZHzLzfuU82ISO1oxeCHzHvVZaBqqPDFJR0QBRDiqDpp0Uc5ChuS -HewT1XoOULNNE5y60ygIneg7F9QI9ewgbEn/u+NnwImbqEkRq8+3dvyYJT59z1ZK -RwjE9vYbqUvzJDHJFauzB2TbjMjE17fQDZyda2QWUedU5SpxXYmSgS2+yOWqFPwl -1DNxfK7yeZ0W4s84TL02UwLX/nP88+IfF+uvbUG/3znmGb00ijAGgZKzoTQw/E/8 -qzA0xBGfZ0lSbsDrYDf+PmSLmNb9WKGiMPiXdgRkFQVEATKBMYNGDZMCAwEAAQ== ------END RSA PUBLIC KEY----- diff --git a/src/test/keys/rsa8192-priv.pem b/src/test/keys/rsa8192-priv.pem deleted file mode 100644 index f05d15d..0000000 --- a/src/test/keys/rsa8192-priv.pem +++ /dev/null @@ -1,99 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/src/test/keys/rsa8192-pub.pem b/src/test/keys/rsa8192-pub.pem deleted file mode 100644 index 69a42a0..0000000 --- a/src/test/keys/rsa8192-pub.pem +++ /dev/null @@ -1,24 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -MIIECgKCBAEA4pOMJstHRdtF7xhKYcLqf3+AeXepvFduP5doKMC8fPQmiTkTgBxk -Wh4CRlc9Y/QyQHj5kWDBrSyC1/PrQUuamwR2xpAS/FEmHpYdtQ6OVkgGOmbrqch/ -4qvpRpeKaZfWiW72ZB4/1KoVM+KzdgzJ9nVG3CFJGqdUUwo0MO1aMMa2VDWHL52n -hSAfUiSpBBsOOuHaKy1r4c2ZJV4AW90BnNNQ97kV00IrWolWl2ZlPbDP4+TarcTd -Hay6FyRmAycaoMPc0szlpIymTVXvWN9AyBRw8Ar5uadqw8GiBLhOd9KDfzQ3oE0a -5hZwY8KwTkKb6PTq8PYkj7CUzE12b2M9oBhmqrE88l9uqs0CnShKuF/EEuy6ClqY -4xI+y2Xh3lYQqVmiHGiB/hD0mnLYeBZ6JEzMhGB0fIzxyFRIP8voVljHwy/vTysW -6CH/ehVpFNsV4bM9DkKhGhux3NnszTNSrNWBohYwW5sl/TX2woLFRbaJOur9OW1+ -p4n67gtUnt8cXeE57d80XuaFvEf0JS+f5R70bJyYqqcviZhTOmHT3Kdm0FIvvCii -BZtbNP/31wtn3gWbmisb27meSnrAGRqeyocOnJRS66V/twXMJZMXi4em78yNl3n9 -Wijjvohct3z3TaSgb6OIdVN0QtZ1VRDvrzb8H3xBElHYYZLVAbDBGQawcvDGcgq2 -f1LN9IHB93KareEo8RhewbrUsh2i00Wu3Vhdwxs+449Y10vYeawE50YPIFeuMVji -O3FN/rimsLYBRAyr1G3kjAq0zqXl//wW3eTnVI33IN3FT0oH5rPGkTRhoobYEuep -69usxm5sn4oprPKB7owk+hn3FSb+n69G5a6Pv0DWMoDI3xLs9zUQCSw9iIE4uF5t -MGw4Fk8f8DLFYqpHf0fO8SIwRxhYj2ngALa5GNcgH13f5b6wa6el9J2ccbNuAmuh -RLoCGsczT2up9ZqRfD8WaOsGHiuQAV/RvNP1wNBlknWK6IQG68XxY6a+mQRxgOoo -Vg57Ge4LzUUXgT0onE3jvOXebEXnDq4A76J6lreW/kd9qVxpaFgLqS2Ci9JXCKNY -HnpkHMzWIWd3gOwfLSPb9kp08clxHnAwEmdBsYjy/AJIVVwKRjdIpwA47Jue29wz -RtTTtY8yJ1rKOwT3jbQ0ozXrdgBo3PfdNI0GG0RAwW0pfAnKGnNdPtGJpXrbJOr8 -PkPysF3cEcuQZrPH7Yi/ENFl8gx6Cq6NE90sxyHCD20A5QOjTQ+yZwJUNQyYJqpk -4g6JJJs3M4x42QORP1Uppn/B3zfDFuB/3SMMJGPSu9TU9TVX4uWI2ToS4a4I4RNC -qKoNb4rZMAgeN0fn1fvDanaQxpR4bcOaswIDAQAB ------END RSA PUBLIC KEY-----