-MODULES=bio digest encode encrypt kdf keyexch mac pkey signature sslecho
+MODULES = bio \
+ cipher \
+ cms \
+ digest \
+ encode \
+ encrypt \
+ guide \
+ http3 \
+ kdf \
+ keyexch \
+ mac \
+ pkey \
+ signature \
+ smime \
+ sslecho
all:
@set -e; for i in $(MODULES); do \
-# Quick instruction:
-# To build against an OpenSSL built in the source tree, do this:
#
-# make OPENSSL_INCS_LOCATION=-I../../include OPENSSL_LIBS_LOCATION=-L../..
-#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto and libssl are on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./server-arg
-# LD_LIBRARY_PATH=../.. ./server-cmod
-# LD_LIBRARY_PATH=../.. ./server-conf
-# LD_LIBRARY_PATH=../.. ./client-arg
-# LD_LIBRARY_PATH=../.. ./client-conf
-# LD_LIBRARY_PATH=../.. ./saccept
-# LD_LIBRARY_PATH=../.. ./sconnect
-CFLAGS = $(OPENSSL_INCS_LOCATION)
-LDFLAGS = $(OPENSSL_LIBS_LOCATION) -lssl -lcrypto $(EX_LIBS)
+TESTS = client-arg \
+ client-conf \
+ saccept \
+ sconnect \
+ server-arg \
+ server-cmod \
+ server-conf
-all: client-arg client-conf saccept sconnect server-arg server-cmod server-conf
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lssl -lcrypto
-test:
+all: $(TESTS)
client-arg: client-arg.o
client-conf: client-conf.o
server-cmod: server-cmod.o
server-conf: server-conf.o
-client-arg client-conf saccept sconnect server-arg server-cmod server-conf:
- $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
clean:
- $(RM) *.o client-arg client-conf saccept sconnect server-arg server-cmod server-conf
+ $(RM) $(TESTS) *.o
+
+test: all
+ @echo "\nBIO tests:"
+ @echo "skipped"
const char *hostport = HOSTPORT;
const char *CAfile = CAFILE;
const char *hostname;
- char *cp;
BIO *out = NULL;
char buf[1024 * 10], *p;
SSL_CTX *ssl_ctx = NULL;
-# Quick instruction:
-# To build against an OpenSSL built in the source tree, do this:
#
-# make OPENSSL_INCS_LOCATION=-I../../include OPENSSL_LIBS_LOCATION=-L../..
-#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./aesccm
-# LD_LIBRARY_PATH=../.. ./aesgcm
-# LD_LIBRARY_PATH=../.. ./aeskeywrap
-# LD_LIBRARY_PATH=../.. ./ariacbc
-CFLAGS = $(OPENSSL_INCS_LOCATION)
-LDFLAGS = $(OPENSSL_LIBS_LOCATION) -lssl -lcrypto
+TESTS = aesccm \
+ aesgcm \
+ aeskeywrap \
+ ariacbc
-TESTS=aesccm aesgcm aeskeywrap ariacbc
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
aeskeywrap: aeskeywrap.o
ariacbc: ariacbc.o
-aesccm aesgcm aeskeywrap ariacbc:
- $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
clean:
- $(RM) aesccm aesgcm aeskeywrap ariacbc *.o
+ $(RM) $(TESTS) *.o
.PHONY: test
test: all
EVP_CIPHER_CTX *ctx;
EVP_CIPHER *cipher = NULL;
int outlen, tmplen;
- size_t cbc_ivlen = sizeof(cbc_iv);
unsigned char outbuf[1024];
- unsigned char outtag[16];
printf("ARIA CBC Encrypt:\n");
printf("Plaintext:\n");
int ret = 0;
EVP_CIPHER_CTX *ctx;
EVP_CIPHER *cipher = NULL;
- int outlen, tmplen, rv;
- size_t cbc_ivlen = sizeof(cbc_iv);
+ int outlen, tmplen;
unsigned char outbuf[1024];
printf("ARIA CBC Decrypt:\n");
cms_uncomp \
cms_ver
-CFLAGS = -I../../include -g
+CFLAGS = -I../../include -g -Wall
LDFLAGS = -L../..
LDLIBS = -lcrypto
all: $(TESTS)
+cms_comp: cms_comp.o
+cms_ddec: cms_ddec.o
+cms_dec: cms_dec.o
+cms_denc: cms_denc.o
+cms_enc: cms_enc.o
+cms_sign: cms_sign.o
+cms_sign2: cms_sign2.o
+cms_uncomp: cms_uncomp.o
+cms_ver: cms_ver.o
+
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
clean:
$(RM) $(TESTS) *.o
-cms_%: cms_%.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o "$@" "$<" $(LDLIBS)
-
test: all
@echo "\nCMS tests:"
LD_LIBRARY_PATH=../.. ./cms_enc
rcert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
rkey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
rcert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
rkey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
scert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
if (!out)
goto err;
- if (!(flags & CMS_STREAM))
- BIO_reset(in);
+ if (!(flags & CMS_STREAM)) {
+ if (BIO_reset(in) < 0)
+ goto err;
+ }
/* Write out S/MIME message */
if (!SMIME_write_CMS(out, cms, in, flags))
scert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
scert2 = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey2 = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./EVP_MD_demo
-CFLAGS = -I../../include -g -Wall
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = EVP_MD_demo \
+ EVP_MD_stdin \
+ EVP_MD_xof \
+ BIO_f_md
-TESTS=EVP_MD_demo EVP_MD_stdin EVP_MD_xof BIO_f_md
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
-
EVP_MD_demo: EVP_MD_demo.o
EVP_MD_stdin: EVP_MD_stdin.o
EVP_MD_xof: EVP_MD_xof.o
BIO_f_md: BIO_f_md.o
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+clean:
+ $(RM) *.o $(TESTS)
+
.PHONY: test
-# Since some of these tests use stdin we use the source file as stdin when running the exes
+# Since some of these tests use stdin, we use the source file as stdin
+# when running the tests
test: all
@echo "\nDigest tests:"
@set -e; for tst in $(TESTS); do \
echo "\n"$$tst; \
cat $$tst.c | ./$$tst; \
done
-
-clean:
- $(RM) *.o $(TESTS)
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./rsa_encode
-CFLAGS = -I../../include -g -Wall
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = ec_encode \
+ rsa_encode
-TESTS=ec_encode rsa_encode
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
+ec_encode: ec_encode.o
+rsa_encode: rsa_encode.o
-%_encode: %_encode.o
-
-test:
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
clean:
$(RM) *.o $(TESTS)
+
+.PHONY: test
+test: all
+ @echo "\nencode tests:"
+ @echo "skipped"
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./rsa_encrypt
-CFLAGS = -I../../include -g
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = rsa_encrypt
-TESTS=rsa_encrypt
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
-
rsa_encrypt: rsa_encrypt.o
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
clean:
$(RM) *.o $(TESTS)
return ret;
}
-static int do_decrypt(OSSL_LIB_CTX *libctx, const char *in, size_t in_len,
+static int do_decrypt(OSSL_LIB_CTX *libctx, const unsigned char *in, size_t in_len,
unsigned char **out, size_t *out_len)
{
int ret = 0, public = 0;
#
# To run the demos when linked with a shared library (default) ensure that
-# libcrypto and libssl are on the library path. For example to run the
-# tls-client-block demo:
+# libcrypto and libssl are on the library path. For example:
#
-# LD_LIBRARY_PATH=../.. ./tls-client-block
+# LD_LIBRARY_PATH=../.. ./tls-client-block www.example.com 443
-CFLAGS = -I../../include -g
-LDFLAGS = -L../..
-LDLIBS = -lcrypto -lssl
-
-all: tls-client-block quic-client-block quic-multi-stream tls-client-non-block \
- quic-client-non-block
+TESTS = tls-client-block \
+ quic-client-block \
+ quic-multi-stream \
+ tls-client-non-block \
+ quic-client-non-block
-tls-client-block: tls-client-block.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
-
-quic-client-block: quic-client-block.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto -lssl
-quic-multi-stream: quic-multi-stream.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+all: $(TESTS)
-tls-client-non-block: tls-client-non-block.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+tls-client-block: tls-client-block.o
+quic-client-block: quic-client-block.o
+quic-multi-stream: quic-multi-stream.o
+tls-client-non-block: tls-client-non-block.o
+quic-client-non-block: quic-client-non-block.o
-quic-client-non-block: quic-client-non-block.c
+$(TESTS):
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
clean:
- $(RM) *.o tls-client-block quic-client-block quic-multi-stream \
- tls-client-non-block quic-client-non-block
+ $(RM) $(TESTS) *.o
+
+.PHONY: test
+test: all
+ @echo "\nTLS and QUIC tests:"
+ @echo "skipped"
all: ossl-nghttp3-demo
+ossl-nghttp3-demo: ossl-nghttp3-demo.o ossl-nghttp3.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+
clean:
$(RM) ossl-nghttp3-demo *.o
-ossl-nghttp3-demo: ossl-nghttp3-demo.o ossl-nghttp3.o
- $(CC) $(CFLAGS) -o "$@" $^ $(LDFLAGS) $(LDLIBS)
-
-%.o: %.c
- $(CC) $(CFLAGS) -c -o "$@" "$<"
+.PHONY: test
+test: all
+ @echo "\nHTTP/3 tests:"
+ @echo "skipped"
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./hkdf
-CFLAGS = -I../../include -g
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = hkdf \
+ pbkdf2 \
+ scrypt \
+ argon2
-TESTS=hkdf pbkdf2 scrypt argon2
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
-
hkdf: hkdf.o
pbkdf2: pbkdf2.o
scrypt: scrypt.o
argon2: argon2.o
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
clean:
$(RM) *.o $(TESTS)
goto end;
}
+ printf("Success\n");
+
rv = EXIT_SUCCESS;
end:
EVP_KDF_CTX_free(kctx);
goto end;
}
+ printf("Success\n");
+
ret = EXIT_SUCCESS;
end:
EVP_KDF_CTX_free(kctx);
goto end;
}
+ printf("Success\n");
+
ret = EXIT_SUCCESS;
end:
EVP_KDF_CTX_free(kctx);
goto end;
}
+ printf("Success\n");
+
ret = EXIT_SUCCESS;
end:
EVP_KDF_CTX_free(kctx);
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./x25519
-CFLAGS = -I../../include -g -Wall
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = x25519
-TESTS=x25519
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
+x25519: x25519.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
-%x25519: %x25519.o
+clean:
+ $(RM) *.o $(TESTS)
.PHONY: test
test: all
echo "\n"$$tst; \
LD_LIBRARY_PATH=../.. ./$$tst; \
done
-
-clean:
- $(RM) *.o $(TESTS)
-# Quick instruction:
-# To build against an OpenSSL built in the source tree, do this:
#
-# make OPENSSL_INCS_LOCATION=-I../../include OPENSSL_LIBS_LOCATION=-L../..
-#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./gmac
-# LD_LIBRARY_PATH=../.. ./poly1305
-CFLAGS = $(OPENSSL_INCS_LOCATION) -Wall
-LDFLAGS = $(OPENSSL_LIBS_LOCATION) -lssl -lcrypto
+TESTS = gmac \
+ hmac-sha512 \
+ cmac-aes256 \
+ poly1305
-TESTS=gmac hmac-sha512 cmac-aes256 poly1305
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
cmac-aes256: cmac-aes256.o
poly1305: poly1305.o
-gmac hmac-sha512 cmac-aes256 poly1305:
- $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
clean:
$(RM) *.o $(TESTS)
* you can set a progress callback using EVP_PKEY_set_cb; see the example in
* EVP_PKEY_generate(3).
*/
- fprintf(stderr, "Generating RSA key, this may take some time...\n");
+ fprintf(stdout, "Generating RSA key, this may take some time...\n");
if (EVP_PKEY_generate(genctx, &pkey) <= 0) {
fprintf(stderr, "EVP_PKEY_generate() failed\n");
goto cleanup;
{
EVP_PKEY *pkey = NULL;
- fprintf(stderr, "Generating RSA key, this may take some time...\n");
+ fprintf(stdout, "Generating RSA key, this may take some time...\n");
pkey = EVP_PKEY_Q_keygen(libctx, propq, "RSA", (size_t)bits);
if (pkey == NULL)
/* Output hexadecimal representations of the BIGNUM objects. */
fprintf(stdout, "\nNumber of bits: %d\n\n", bits);
- fprintf(stderr, "Public values:\n");
+ fprintf(stdout, "Public values:\n");
fprintf(stdout, " n = 0x");
BN_print_fp(stdout, n);
fprintf(stdout, "\n");
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./EVP_PKEY_EC_keygen
-# LD_LIBRARY_PATH=../.. ./EVP_PKEY_RSA_keygen
-# LD_LIBRARY_PATH=../.. ./EVP_PKEY_DSA_keygen
-# LD_LIBRARY_PATH=../.. ./EVP_PKEY_DSA_paramgen
-# LD_LIBRARY_PATH=../.. ./EVP_PKEY_DSA_paramvalidate
-# LD_LIBRARY_PATH=../.. ./EVP_PKEY_DSA_paramfromdata
-CFLAGS = -I../../include -g -Wall
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = EVP_PKEY_EC_keygen \
+ EVP_PKEY_RSA_keygen \
+ EVP_PKEY_DSA_keygen \
+ EVP_PKEY_DSA_paramgen \
+ EVP_PKEY_DSA_paramvalidate \
+ EVP_PKEY_DSA_paramfromdata
-TESTS=EVP_PKEY_EC_keygen EVP_PKEY_RSA_keygen EVP_PKEY_DSA_keygen \
-EVP_PKEY_DSA_paramgen EVP_PKEY_DSA_paramvalidate EVP_PKEY_DSA_paramfromdata
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c dsa.inc
- $(CC) $(CFLAGS) -c $<
+EVP_PKEY_DSA_keygen.o: EVP_PKEY_DSA_keygen.c dsa.inc
+EVP_PKEY_DSA_paramgen.o: EVP_PKEY_DSA_paramgen.c dsa.inc
+EVP_PKEY_DSA_paramvalidate.o: EVP_PKEY_DSA_paramvalidate.c dsa.inc
+EVP_PKEY_DSA_paramfromdata.o: EVP_PKEY_DSA_paramfromdata.c dsa.inc
EVP_PKEY_EC_keygen: EVP_PKEY_EC_keygen.o
-
EVP_PKEY_RSA_keygen: EVP_PKEY_RSA_keygen.o
-
EVP_PKEY_DSA_keygen: EVP_PKEY_DSA_keygen.o
-
EVP_PKEY_DSA_paramgen: EVP_PKEY_DSA_paramgen.o
-
EVP_PKEY_DSA_paramvalidate: EVP_PKEY_DSA_paramvalidate.o
-
EVP_PKEY_DSA_paramfromdata: EVP_PKEY_DSA_paramfromdata.o
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
clean:
$(RM) *.o $(TESTS)
#
-# To run the demos when linked with a shared library (default):
+# To run the demos when linked with a shared library (default) ensure
+# that libcrypto is on the library path. For example:
#
# LD_LIBRARY_PATH=../.. ./EVP_EC_Signature_demo
-# LD_LIBRARY_PATH=../.. ./EVP_DSA_Signature_demo
-# LD_LIBRARY_PATH=../.. ./EVP_ED_Signature_demo
-# LD_LIBRARY_PATH=../.. ./rsa_pss_direct
-# LD_LIBRARY_PATH=../.. ./rsa_pss_hash
-CFLAGS = -I../../include -g -Wall
-LDFLAGS = -L../..
-LDLIBS = -lcrypto
+TESTS = EVP_EC_Signature_demo \
+ EVP_DSA_Signature_demo \
+ EVP_ED_Signature_demo \
+ rsa_pss_direct \
+ rsa_pss_hash
-TESTS=EVP_EC_Signature_demo EVP_DSA_Signature_demo EVP_ED_Signature_demo rsa_pss_direct rsa_pss_hash
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
all: $(TESTS)
-%.o: %.c
- $(CC) $(CFLAGS) -c $<
-
EVP_EC_Signature_demo: EVP_EC_Signature_demo.o
EVP_DSA_Signature_demo: EVP_DSA_Signature_demo.o
EVP_ED_Signature_demo: EVP_ED_Signature_demo.o
rsa_pss_direct: rsa_pss_direct.o
rsa_pss_hash: rsa_pss_hash.o
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
clean:
$(RM) *.o $(TESTS)
if (verify(libctx, sig, sig_len) == 0)
goto end;
+ printf("Success\n");
+
ret = EXIT_SUCCESS;
end:
OPENSSL_free(sig);
if (verify(libctx, sig, sig_len) == 0)
goto end;
+ printf("Success\n");
+
ret = EXIT_SUCCESS;
end:
OPENSSL_free(sig);
--- /dev/null
+#
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto is on the library path. For example, to run the
+# sm_enc demo:
+#
+# LD_LIBRARY_PATH=../.. ./sms_enc
+
+TESTS = smenc \
+ smdec \
+ smsign \
+ smsign2 \
+ smver
+
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lcrypto
+
+all: $(TESTS)
+
+smenc: smenc.o
+smdec: smdec.o
+smsign: smsign.o
+smsign2: smsign2.o
+smver: smver.o
+
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+clean:
+ $(RM) $(TESTS) *.o
+
+test: all
+ @echo "\nS/MIME tests:"
+ LD_LIBRARY_PATH=../.. ./smenc
+ LD_LIBRARY_PATH=../.. ./smdec
+ LD_LIBRARY_PATH=../.. ./smsign2
+ LD_LIBRARY_PATH=../.. ./smver
rcert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
rkey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
if (!PKCS7_decrypt(p7, rkey, rcert, out, 0))
goto err;
- ret = EXIT_SUCCESS;
+ printf("Success\n");
+ ret = EXIT_SUCCESS;
err:
if (ret != EXIT_SUCCESS) {
fprintf(stderr, "Error Signing Data\n");
BIO_free(tbio);
return ret;
-
}
int ret = EXIT_FAILURE;
/*
- * On OpenSSL 0.9.9 only:
* for streaming set PKCS7_STREAM
*/
int flags = PKCS7_STREAM;
if (!SMIME_write_PKCS7(out, p7, in, flags))
goto err;
- ret = EXIT_SUCCESS;
+ printf("Success\n");
+ ret = EXIT_SUCCESS;
err:
if (ret != EXIT_SUCCESS) {
fprintf(stderr, "Error Encrypting Data\n");
BIO_free(out);
BIO_free(tbio);
return ret;
-
}
int ret = EXIT_FAILURE;
/*
- * For simple S/MIME signing use PKCS7_DETACHED. On OpenSSL 0.9.9 only:
+ * For simple S/MIME signing use PKCS7_DETACHED.
* for streaming detached set PKCS7_DETACHED|PKCS7_STREAM for streaming
* non-detached set PKCS7_STREAM
*/
scert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
if (!out)
goto err;
- if (!(flags & PKCS7_STREAM))
- BIO_reset(in);
+ if (!(flags & PKCS7_STREAM)) {
+ if (BIO_reset(in) < 0)
+ goto err;
+ }
/* Write out S/MIME message */
if (!SMIME_write_PKCS7(out, p7, in, flags))
goto err;
- ret = EXIT_SUCCESS;
+ printf("Success\n");
+ ret = EXIT_SUCCESS;
err:
if (ret != EXIT_SUCCESS) {
fprintf(stderr, "Error Signing Data\n");
BIO_free(tbio);
return ret;
-
}
* https://www.openssl.org/source/license.html
*/
-/* S/MIME signing example: 2 signers. OpenSSL 0.9.9 only */
+/* S/MIME signing example: 2 signers */
#include <openssl/pem.h>
#include <openssl/pkcs7.h>
#include <openssl/err.h>
scert = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
scert2 = PEM_read_bio_X509(tbio, NULL, 0, NULL);
- BIO_reset(tbio);
+ if (BIO_reset(tbio) < 0)
+ goto err;
skey2 = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);
if (!SMIME_write_PKCS7(out, p7, in, PKCS7_STREAM))
goto err;
- ret = EXIT_SUCCESS;
+ printf("Success\n");
+ ret = EXIT_SUCCESS;
err:
if (ret != EXIT_SUCCESS) {
fprintf(stderr, "Error Signing Data\n");
goto err;
}
- fprintf(stderr, "Verification Successful\n");
+ printf("Verification Successful\n");
ret = EXIT_SUCCESS;
-
err:
if (ret != EXIT_SUCCESS) {
fprintf(stderr, "Error Verifying Data\n");
--- /dev/null
+#
+# To run the demos when linked with a shared library (default) ensure that
+# libcrypto and libssl are on the library path. For example:
+#
+# LD_LIBRARY_PATH=../.. ./sslecho
+
+TESTS = sslecho
+
+CFLAGS = -I../../include -g -Wall
+LDFLAGS = -L../..
+LDLIBS = -lssl -lcrypto
+
+all: $(TESTS)
+
+sslecho: main.o
+
+$(TESTS):
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+clean:
+ $(RM) $(TESTS) *.o
+
+test: all
+ @echo "\nSSL Echo tests:"
+ @echo "skipped"
signal(SIGPIPE, SIG_IGN);
/* Splash */
- printf("\nsslecho : Simple Echo Client/Server (OpenSSL 3.0.1-dev) : %s : %s\n\n", __DATE__,
+ printf("\nsslecho : Simple Echo Client/Server : %s : %s\n\n", __DATE__,
__TIME__);
/* Need to know if client or server */
+++ /dev/null
-PROG ?= sslecho
-
-all: $(PROG)
-
-# Debug version.
-#
-$(PROG): main.c
-
- $(CC) -O0 -g3 -W -Wall -I../../include -L../../ -o $(PROG) main.c -lssl -lcrypto
-
-test:
-
-clean:
- rm -rf $(PROG) *.o *.obj