Compare commits

...

229 Commits

Author SHA1 Message Date
cvs2svn
a13ec6774d This commit was manufactured by cvs2svn to create tag 'AFTER_COMPAQ_PATCH'. 2002-05-22 11:27:43 +00:00
Richard Levitte
77e2de7ea7 Compaq sent a rather large patch, and here are the contents, adapted
where necessary to the main trunk (0.9.8-dev).

This does not include rearrangements and work I've been doing, that'll
come in the next bunch of commits to this branch.  This set of changes
can't be expected to work on any VMS system, there are changes in here
that are very specific to Compaq's building system.

This set of changes will be surrounded by the tags BEFORE_COMPAQ_PATCH
and AFTER_COMPAQ_PATCH.
2002-05-22 11:27:42 +00:00
cvs2svn
606efc54e6 This commit was manufactured by cvs2svn to create branch 'BRANCH_VMS_64BIT'. 2002-05-21 08:59:58 +00:00
Bodo Möller
7711de24f9 accept NULL in 'free' functions 2002-05-21 08:59:57 +00:00
Dr. Stephen Henson
eee6c81af8 Reorganise -subj option code, fix buffer overrun. 2002-05-19 16:31:10 +00:00
Dr. Stephen Henson
b89670ef0e Fix Mingw32 asm build: use the Unix
bignum assembly method of bn-586.pl
and co-586.pl which (for some reason)
VC++ doesn't use.
2002-05-19 12:03:05 +00:00
Dr. Stephen Henson
0fccb00b5b Add missing EVP_CIPHER_CTX_init call. 2002-05-18 23:43:10 +00:00
Lutz Jänicke
72da660ddb Fix incorrect =over 4 location.
Submitted by: David Waitzman <djw@bbn.com>
Reviewed by: Lutz Jaenicke
PR: [openssl.org #38]
2002-05-16 17:45:37 +00:00
Bodo Möller
46ffee4792 fix EVP_dsa_sha macro
Submitted by: Nils Larsch
2002-05-16 12:51:18 +00:00
Lutz Jänicke
c0a953650b Use the indirect way to the actual request tracker, so that people
also are informed about the credentials required for guest access
and the operation instructions.
2002-05-16 10:01:53 +00:00
Bodo Möller
0424fe1a8f update 2002-05-16 09:28:09 +00:00
Dr. Stephen Henson
544a2aea4b Zero cipher_data in EVP_CIPHER_CTX_cleanup
Add cleanup calls to evp_test.c

Allow reuse of cipher contexts by removing
automatic cleanup in EVP_*Final().
2002-05-15 18:49:25 +00:00
Bodo Möller
60e5f36d27 make b_print.c consistent with the rest of OpenSSL:
disable assert() except for debug builds
2002-05-14 19:40:58 +00:00
Lutz Jänicke
2469361c0f Add missing '"'
Submitted by: Boyd Gerber <gerberb@zenez.com>
2002-05-12 20:37:44 +00:00
Lutz Jänicke
6fa865a325 Recognize PPC64 target.
Submitted by:
Reviewed by:
PR: 26
2002-05-12 19:45:51 +00:00
Dr. Stephen Henson
e9ba69631b EVP_SealFinal should return a value. 2002-05-11 17:37:08 +00:00
Ulf Möller
d80a8d1919 values were reset for no reason. 2002-05-11 09:15:42 +00:00
Ulf Möller
d0ff2a237b updated Mingw32 instructions. 2002-05-11 09:14:40 +00:00
Dr. Stephen Henson
6e5dd63c77 Add config entry debug-steve-linux-pseudo64. This sets the
SIXTY_FOUR bignum library option to use 64 bit operations
on the 32 bit linux platform.

This is very inefficient but it can be used to test some
of the 64 bit logic on a 32 bit platform.
2002-05-10 23:00:43 +00:00
Dr. Stephen Henson
dc014d43af Fallback to normal multiply if n2 == 8 and dna or dnb is not zero
in bn_mul_recursive.

This is (hopefully) what was triggering bignum errors on 64 bit
platforms and causing the BN_mod_mul test to fail.
2002-05-10 22:18:13 +00:00
Dr. Stephen Henson
2f9cf160e4 Avoid gcc warning: BN_DEC_CONV when SIXTY_FOUR_BIT is defined is unsigned. 2002-05-10 22:07:37 +00:00
Richard Levitte
336c35dc9e Updating status for 0.9.6d 2002-05-09 23:54:02 +00:00
Richard Levitte
72b5215645 Synchronise the FAQ 2002-05-09 23:41:40 +00:00
Richard Levitte
06bed64317 Make the huge buffer smaller, so the size becomes reasonable for small-stack environments.
Notified by Verdon Walker <VWalker@novell.com>
2002-05-09 20:14:00 +00:00
Richard Levitte
c559759265 One place where VMS wasn't changed to OPENSSL_SYS_VMS... 2002-05-09 18:27:06 +00:00
Richard Levitte
b4000e8ad8 Move an assert() to avoid core dumps when a static buffer hasn't been given.
Notified by Verdon Walker <VWalker@novell.com>
2002-05-09 18:19:21 +00:00
Richard Levitte
21d5ed98d5 Small documentation fix for EVP_CipherFinal or EVP_CipherFinal_ex.
Notified by Stella Power <snpower@maths.tcd.ie>.
PR: 24
2002-05-08 15:20:38 +00:00
Richard Levitte
e9a182fa30 Generate an error if rewinding wasn't possible.
Notified by Ken Hirsch <kenhirsch@myself.com>.
PR: 23
2002-05-08 15:12:59 +00:00
Bodo Möller
b6db386ffd Change internals of the EC library so that the functions
EC_GROUP_{set_generator,get_generator,get_order,get_cofactor} are
implemented directly in crypto/ec/ec_lib.c and not dispatched to
methods.

Also fix EC_GROUP_copy to copy the NID.
2002-05-08 11:54:24 +00:00
Lutz Jänicke
2c975b501d Add missing ";" after fi
Submitted by: bryanh@giraffe-data.com
Reviewed by:
PR: [openssl.org #18]
2002-05-07 15:35:48 +00:00
Bodo Möller
279fe3b1c5 in SignerInfo, use ecdsa-with-SHA1 OID for ECDSA (not ecPublicKey)
Submitted by: Nils Larsch
2002-05-07 15:14:12 +00:00
Bodo Möller
98a9092af1 Fix ciphersuite list to enforce low priority for RC4. 2002-05-07 08:36:26 +00:00
Bodo Möller
87108f5af9 ensure that, for each strength, RC4 ciphers have least preference
in the default ciphersuite list
2002-05-07 07:59:35 +00:00
Bodo Möller
f257d984b7 refer to latest draft for AES ciphersuites 2002-05-07 07:55:36 +00:00
Bodo Möller
b889d6a8e8 fix warning 2002-05-06 10:44:59 +00:00
Bodo Möller
47234cd3d2 update 2002-05-05 23:47:46 +00:00
Bodo Möller
2c8d0dccfc improve wNAF generation 2002-05-05 23:45:09 +00:00
Bodo Möller
a4f576a378 disable AES ciphersuites unless explicitly requested 2002-05-05 23:44:27 +00:00
Bodo Möller
3def5a010e fix casts 2002-05-05 23:00:28 +00:00
Richard Levitte
294bd1e2f3 Make sure that date is run under the C locale, so dates are given in the
default format.
PR: 16
2002-05-02 08:05:46 +00:00
Dr. Stephen Henson
253ef2187c Add apps_startup and bio_err init code to smime.c 2002-05-01 20:07:46 +00:00
Lutz Jänicke
c0455cbb18 Fix escaping when using the -subj option of "openssl req", document
'hidden' -nameopt support. (Robert Joop <joop@fokus.gmd.de>)
2002-04-30 12:08:18 +00:00
Lutz Jänicke
17e2c77a77 Add information about -nameopt option for x509. 2002-04-29 16:01:41 +00:00
Bodo Möller
b52f3818f4 undo nonsense patch (r *is* signed or we have signedness mismatches elsewhere) 2002-04-29 11:03:06 +00:00
Richard Levitte
cc12975514 Fix unsigned vs. signed clash 2002-04-29 10:29:38 +00:00
Richard Levitte
9738f395c6 Synchronise with 0.9.7-stable. 2002-04-29 10:28:29 +00:00
Richard Levitte
d4294c8984 Synchronise with 0.9.7-stable. 2002-04-29 10:19:19 +00:00
Bodo Möller
8df61b5011 Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not
encoded as NULL) with id-dsa-with-sha1.

Submitted by: Nils Larsch
2002-04-26 08:28:34 +00:00
Lutz Jänicke
f1e6643751 Add generationQualifier OID (proposed by Fiel Cabral). 2002-04-25 18:03:13 +00:00
Richard Levitte
6991bf196c Potential memory leak removed. Notified by <threaded@totalise.co.uk> 2002-04-25 10:11:21 +00:00
Bodo Möller
822a4c1bdb new items for 0.9.7 2002-04-25 07:52:07 +00:00
Bodo Möller
a5868b3fe2 oops 2002-04-25 07:46:35 +00:00
Bodo Möller
4edfacb983 AlgorithmIdentifier bugs 2002-04-25 06:29:27 +00:00
Bodo Möller
c6efe6f59e fix usage (no 'key') 2002-04-23 13:56:14 +00:00
Richard Levitte
35c2b3a9ac Uhmmm, if we use && after having tested for the presence of the certificate,
we just *might* stand a certain chance of actually getting it written
to file...
2002-04-23 13:15:08 +00:00
Lutz Jänicke
af9675e75a ERR_file_name is no longer being used. 2002-04-22 13:54:50 +00:00
Lutz Jänicke
8b2f9cdfad Add cygwin build script (Corinna Vinschen <vinschen@redhat.com>). 2002-04-21 17:54:03 +00:00
Richard Levitte
01682a8b3c Make sure ec and ecdsa is properly handled in Windows.
Notified by Bernd Matthes <bernd.matthes@gemplus.com>
2002-04-20 10:23:56 +00:00
Richard Levitte
8b07f23c30 Signedness mismatch.
Notified by Bernd Matthes <bernd.matthes@gemplus.com>
2002-04-20 10:23:19 +00:00
Richard Levitte
45932ad508 The callback must have (void) as argument list.
Notified by Bernd Matthes <bernd.matthes@gemplus.com>
2002-04-20 10:22:42 +00:00
Richard Levitte
ce94682ce1 No point constifying an int.
Notified by Bernd Matthes <bernd.matthes@gemplus.com>
2002-04-20 10:22:01 +00:00
Richard Levitte
2d7ab7e9ea Do not free p if it hasn't been used yet.
Notified by Bernd Matthes <bernd.matthes@gemplus.com>
2002-04-20 10:19:20 +00:00
Richard Levitte
6176df94ed Make sure the opened directory is closed on exit.
Notified by Lorinczy Zsigmond <lzsiga@mail.ahiv.hu>
2002-04-18 16:20:13 +00:00
Lutz Jänicke
a8f8788248 Missing "Configure" entry (Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>). 2002-04-18 12:47:50 +00:00
Lutz Jänicke
d5d007abe3 Optimize: better shortcut evaluation ("Howard Chu" <hyc@highlandsun.com>). 2002-04-18 11:54:06 +00:00
Lutz Jänicke
151457ab16 Handle headings uniformly to allow automatic processing. 2002-04-18 08:11:31 +00:00
Bodo Möller
dde3e83129 'version' is not optional in the encoding
Submitted by: Nils Larsch
2002-04-17 11:35:52 +00:00
Bodo Möller
8f182fdc69 'version' is not optional in the encoding
Submitted by: Nils Larsch
2002-04-17 11:31:20 +00:00
Bodo Möller
1064acafc4 check return values
Submitted by: Nils Larsch
2002-04-17 09:31:34 +00:00
Bodo Möller
ff8e412ceb get rid of some assignments that have become obsolete 2002-04-15 15:29:43 +00:00
Lutz Jänicke
e9cbcb1d98 Document OID changes. 2002-04-15 14:18:30 +00:00
Lutz Jänicke
ea7fc0311c Use the "mail" short name according to RFC2798 (Michael Bell
<michael.bell@rz.hu-berlin.de>).
2002-04-15 13:30:41 +00:00
Lutz Jänicke
30911232c1 Some more OID enhancements. 2002-04-15 10:41:38 +00:00
Lutz Jänicke
2940a1298e Fix CRLF problem in BASE64 decode. 2002-04-15 09:55:40 +00:00
Bodo Möller
f916052eab remove disabled code 2002-04-14 13:28:17 +00:00
Bodo Möller
2fb3f002d0 fix length field we create when converting SSL 2.0 format into SSL 3.0/TLS 1.0 format
(the bug was introduced with message callback support)
2002-04-14 13:05:15 +00:00
Bodo Möller
82b0bf0b87 Implement known-IV countermeasure.
Fix length checks in ssl3_get_client_hello().

Use s->s3->in_read_app_data differently to fix ssl3_read_internal().
2002-04-13 22:47:20 +00:00
Richard Levitte
3a7cef3e76 Avoid emacs backup files when making a snapshot 2002-04-13 12:28:44 +00:00
Ulf Möller
592c0e0273 another error discovered by Karsten Braaten. The number was not even
prime!
2002-04-13 09:58:50 +00:00
Bodo Möller
08b977b5a5 looks like a typo 2002-04-12 13:52:40 +00:00
Bodo Möller
85fb12d554 clean up and synchronize with 0.9.6-stable 2002-04-12 13:45:29 +00:00
Bodo Möller
b975183c41 ECDSA representation bugfixes
Submitted by: Nils Larsch
2002-04-12 08:57:01 +00:00
Richard Levitte
083100e2ab Check error code from a2d_ASN1_OBJECT(). 2002-04-11 22:13:58 +00:00
Richard Levitte
241d2ba1da Change the date to XX xxx XXXX in development versions. 2002-04-11 21:51:40 +00:00
Lutz Jänicke
e4fb49775b Synchronize with 0.9.7-stable. 2002-04-11 18:43:52 +00:00
Lutz Jänicke
381a146dc6 Synchronize with 0.9.7-stable branch 2002-04-10 19:52:40 +00:00
Lutz Jänicke
b4a262832a Keep my own specially optimized HP-UX shared library building up to date. 2002-04-10 12:35:45 +00:00
Bodo Möller
6d498d478e harmonize capitalization 2002-04-09 12:42:47 +00:00
Bodo Möller
d0561b5c2d fix ECDSA handling
Submitted by: Nils Larsch
2002-04-09 12:01:21 +00:00
Bodo Möller
4f4b192402 add usage examples 2002-04-09 11:54:24 +00:00
Lutz Jänicke
0ae1661ba2 Apply OID fixes for elliptic curves as supplied by
Nils Larsch <nlarsch@compuserve.de>.
2002-04-08 15:49:53 +00:00
Ulf Möller
4e9ef338fc error reported by Karsten Braaten 2002-04-07 13:33:16 +00:00
Richard Levitte
d16e1131b4 Allow longer program names (VMS allows up to 39 characters).
Submitted by Compaq.
2002-04-06 20:22:48 +00:00
Richard Levitte
a18894d159 make update (libeay.num has been edited to match 0.9.7-stable) 2002-04-06 19:16:12 +00:00
Richard Levitte
dfee50ecd9 Allow longer program names (VMS allows up to 39 characters).
Submitted by Compaq.
2002-04-06 19:00:50 +00:00
Richard Levitte
10189984f9 Oops, the system macro for VMS is OPENSSL_SYS_VMS, not VMS 2002-04-06 11:58:04 +00:00
Richard Levitte
d8425465a3 Recognise DEC C++ as equivalent to DEC C for the definitions of OPENSSL_EXTERN and OPENSSL_GLOBAL.
Submitted by Compaq.
2002-04-06 11:37:18 +00:00
Richard Levitte
1fc02dcf6a Use recv() and send() for socket communication on VMS instead of read()
and write().  The reason is that read() and write() make additional record
level locking which causes hangs of Compaq Secure Web Server (Apache) with
SSL.
Submitted by Compaq.
2002-04-06 11:35:49 +00:00
Richard Levitte
83d092f785 Make shared libraries resolve global symbols within themselves first.
Currently only on GNUish linkers...
Submitted by Steven Bade <sbade@austin.ibm.com>
2002-04-06 09:42:19 +00:00
Lutz Jänicke
4825092bbe Fix buggy object definitions (Svenning Sorensen <sss@sss.dnsalias.net>). 2002-04-04 17:48:37 +00:00
Richard Levitte
bbd79bdf03 Forgot one of the casts 2002-04-03 15:01:28 +00:00
Richard Levitte
a096e9b719 Cast the pointers to the BIGNUM data to unsigned long *. This would be
harmful if we didn't also pass the exact number of bytes of that data
2002-04-03 14:47:38 +00:00
Richard Levitte
ddab25a90d Fix of mixup bwtween SOMAXCONN and SO_MAXCONN.
Furthermore, make SO_MAXCONN the first choice, since that's the standard
(as far as I know).
2002-03-29 23:48:55 +00:00
Lutz Jänicke
ffbe98b763 Make short names of objects RFC2256-compliant. 2002-03-26 17:18:48 +00:00
Richard Levitte
d7a9bb0a2a A forgotten file 2002-03-26 16:42:38 +00:00
Richard Levitte
0d81c69b8e Add the possibility to enable olde des support, not just disable it, for future support. Redocument 2002-03-26 14:28:04 +00:00
Richard Levitte
401cd0af0f Add the mapping of des_random_seed() for 0.9.6 compatibility.
Make sure DES_cblock is defined at all times (meaning one shouldn't include
openssl/des_old.h directly any more).
2002-03-26 13:59:22 +00:00
Richard Levitte
c7b41e67f0 Correct the mapping for des_read_pw() 2002-03-26 13:54:15 +00:00
Richard Levitte
003144a8e8 Make the change to strong keys in the string to key(s) functions experimental in the main trunk as well 2002-03-26 12:44:35 +00:00
Bodo Möller
af1cb47e65 fix warnings
Submitted by: Nils Larsch
2002-03-25 23:41:32 +00:00
Bodo Möller
e8e7fbdb16 fix memory leak
Submitted by: Nils Larsch
2002-03-25 23:18:11 +00:00
Bodo Möller
d5c21afd4b add missing declaration
Submitted by: Nils Larsch
2002-03-25 23:15:21 +00:00
Lutz Jänicke
1afa967909 Fix typo (Craig Davison <cd@securityfocus.com>). 2002-03-25 17:12:24 +00:00
Bodo Möller
85b7b80434 fix conditational compilation for OPENSSL_NO_... 2002-03-22 11:02:13 +00:00
Richard Levitte
fe0f662310 Merge changes from 0.9.7-stable 2002-03-22 10:51:41 +00:00
Richard Levitte
90453438ff Merge changes from 0.9.7-stable 2002-03-22 10:32:23 +00:00
Richard Levitte
2e63f3b733 Merge in DES changed from 0.9.7-stable. 2002-03-22 02:49:46 +00:00
Richard Levitte
125cc35b59 Merge in DES changed from 0.9.7-stable. 2002-03-22 02:42:57 +00:00
Lutz Jänicke
7e58aa7d71 Fix buggy if-condition (thomas poindessous <poinde_t@epita.fr>). 2002-03-21 19:16:02 +00:00
Lutz Jänicke
be3d90de02 Remove superflous (and buggy) statement <justin.fletcher@ntlworld.com>. 2002-03-21 19:08:35 +00:00
Bodo Möller
82652aaf17 fix DH_generate_parameters for general 'generator' 2002-03-20 16:04:04 +00:00
Bodo Möller
17d6bb8158 New function EC_GROUP_check_discriminant().
Restructure implementation of EC_GROUP_check().

Submitted by: Nils Larsch
2002-03-20 10:18:07 +00:00
Lutz Jänicke
11c26ecf81 Map new X509 verification errors to alert codes (Tom Wu <tom@arcot.com>). 2002-03-19 16:42:09 +00:00
Bodo Möller
99d5b23023 Fix typo.
Submitted by: Nils Larsch
2002-03-19 09:51:31 +00:00
Dr. Stephen Henson
611ba3f4a1 Initialize ciph_ctx in kssl.c 2002-03-19 01:28:00 +00:00
Bodo Möller
af28dd6c75 Fix bugs and typos.
Add some WTLS curves.
New function EC_GROUP_check() (this will probably
be implemented differently soon).

Submitted by: Nils Larsch
Reviewed by: Bodo Moeller
2002-03-18 13:10:45 +00:00
Bodo Möller
e79ec456be fix #include position
Submitted by: Nils Larsch
2002-03-18 13:05:20 +00:00
Dr. Stephen Henson
3e268d2717 Ensure EVP_CipherInit() uses the correct encode/decode parameter if
enc == -1

[Reported by Markus Friedl <markus@openbsd.org>]

Fix typo in dh_lib.c (use of DSAerr instead of DHerr).
2002-03-16 23:20:05 +00:00
Bodo Möller
c46acbacde Rename 'cray-t90-cc' into 'cray-j90'.
Add to 'config'.
2002-03-15 16:46:41 +00:00
Bodo Möller
304d90425f fix ssl3_pending 2002-03-15 10:52:32 +00:00
Lutz Jänicke
bfaa8a89e1 Add missing strength entries. 2002-03-14 18:53:15 +00:00
Dr. Stephen Henson
de941e289e Initialize cipher context in KRB5
("D. Russell" <russelld@aol.net>)

Allow HMAC functions to use an alternative ENGINE.
2002-03-14 18:22:23 +00:00
Bodo Möller
1d28453529 add OIDs for WAP/TLS curves 2002-03-14 13:18:57 +00:00
Bodo Möller
690ecff795 Fixes for 'no-hw' combined with 'no-SOME_CIPHER'.
Fix dsaparam usage output.

Submitted by: Nils Larsch
2002-03-14 09:52:03 +00:00
Bodo Möller
234c73767d use BIO_nwrite() more properly to demonstrate the general idea of
BIO_nwrite0/BIO_nwrite (the previous code was OK for BIO pairs but not
in general)
2002-03-14 09:48:54 +00:00
Dr. Stephen Henson
497810cae7 Undo previous patch: avoid warnings by #undef'ing
duplicate definitions.

Suggested by "Kenneth R. Robinette" <support@securenetterm.com>
2002-03-13 13:59:38 +00:00
Dr. Stephen Henson
cbc9d9713d Fix Kerberos warnings with VC++. 2002-03-12 19:37:18 +00:00
Dr. Stephen Henson
98fa4fe8c5 Fix ASN1 additions for KRB5 2002-03-12 13:32:35 +00:00
Dr. Stephen Henson
0b4c91c0fc Fix various warnings when compiling with KRB5 code. 2002-03-12 02:59:37 +00:00
Bodo Möller
b9b43196e1 asm/mips3.o problems 2002-03-11 09:36:04 +00:00
Dr. Stephen Henson
bf6a9e66d6 Make ciphers and digests obtain an ENGINE functional reference
if impl is explicitly supplied.
2002-03-09 18:58:05 +00:00
Dr. Stephen Henson
0c372b94f7 Make {RSA,DSA,DH}_new_method obtain and release an ENGINE
functional reference in all cases.
2002-03-09 18:25:03 +00:00
Dr. Stephen Henson
26e1237380 Fix the Win32_rename() function so it correctly
returns an error code. Use the same code in Win9X
and NT.

Fix some ca.c options so they work under Win32:
unlink/rename wont work under Win32 unless the file
is closed.
2002-03-08 19:11:15 +00:00
Bodo Möller
4882171df5 EC curve stuff
Submitted by: Nils Larsch
2002-03-08 11:10:40 +00:00
Richard Levitte
931627e6a0 Synchronise the AEP engine in all branches. For 0.9.6-stable [engine], implement software fallback 2002-03-07 19:38:59 +00:00
Richard Levitte
274a2c9970 When closing, do not use close(). Also, if the closing call fails, do
not return immediately since that leaves a locked lock.
2002-03-07 17:13:30 +00:00
Richard Levitte
006fcc22a8 Change des_old.c to use types prefixed with _ossl_old_des_. 2002-03-07 15:41:36 +00:00
Bodo Möller
709c51c424 fix spacing 2002-03-07 12:21:31 +00:00
Bodo Möller
9bc448546e Add more curves.
Submitted by: Nils Larsch

Remove unnecessary 'const'.
2002-03-07 12:14:03 +00:00
Dr. Stephen Henson
0dc092334b ENGINE module additions.
Add "init" command to control ENGINE
initialization.

Call ENGINE_finish on initialized ENGINEs on exit.

Reorder shutdown in apps.c: modules should be shut
down first.

Add test private key loader to openssl ENGINE: this
just loads a private key in PEM format.

Fix print format for dh length parameter.
2002-03-06 14:15:13 +00:00
Bodo Möller
36c194638e add SECG OIDs
Submitted by: Nils Larsch
2002-03-06 13:47:32 +00:00
Bodo Möller
45fb737950 reference counting for EC_GROUP structures is not needed (at the
moment at least), so remove it
2002-03-06 09:46:17 +00:00
Richard Levitte
a01273bae3 OpenSSL currently fails on certain pure 64-bit architectures. This is a showstopper 2002-03-06 06:25:31 +00:00
Bodo Möller
2c17323e15 Rephrase statement on the security of two-key 3DES.
[Chosen plaintext attack: R. Merkle, M. Hellman: "On the Security of
  Multiple Encryption", CACM 24 (1981) pp. 465-467, p. 776.

  Known plaintext angriff: P.C. van Oorschot, M. Wiener: "A
  known-plaintext attack on two-key triple encryption", EUROCRYPT '90.]
2002-03-05 15:29:30 +00:00
Bodo Möller
870694b3da fix 'ecdsaparam -C' 2002-03-05 15:17:17 +00:00
Bodo Möller
87a4b4d1f4 fix printf call 2002-03-05 15:05:00 +00:00
Bodo Möller
8ecf5104b3 typo 2002-03-05 14:58:53 +00:00
Bodo Möller
2b3aeffbbd fix 'ecdsaparam -C' output
Submitted by: Nils Larsch
2002-03-05 14:56:17 +00:00
Dr. Stephen Henson
2c2f9e2cc3 Make sure the type accessed by the LONG and ZLONG ASN1 type
is really a long, to avoid problems on platforms where
sizeof(int) != sizeof(long).
2002-03-05 13:48:51 +00:00
Bodo Möller
2d9b1b3ffa more X9.62 OIDs
Submitted by: Nils Larsch <nla@trustcenter.de>
2002-03-05 12:39:19 +00:00
Bodo Möller
f070480275 disable '#ifdef DEBUG' code 2002-03-05 12:37:35 +00:00
Richard Levitte
49f1597de2 Provide a pre 0.9.7 compatibility mapping if
OPENSSL_DES_PRE_0_9_7_COMPATIBILITY is defined.  NOT AT ALL TESTED YET!
Add a comment as to the libdes compatibility.
2002-03-05 11:26:03 +00:00
Richard Levitte
b44e425f39 New configuration targets for OpenBSD, handed to me by Bob Beck <beck@openbsd.org> 2002-03-05 09:43:18 +00:00
Bodo Möller
93683c3cf8 '#if OPENSSL_VERSION_NUMBER >= ...' to document the recent change 2002-03-05 09:07:16 +00:00
Richard Levitte
a08ee55e2d Typo. In DCL, the continuation character is a dash at the end of the
line, which I forgot when spliting one.
2002-03-04 18:07:59 +00:00
Richard Levitte
3bac6d9479 Rename des_SPtrans to DES_SPtrans to differentiate from libdes and avoid certain linkage clashes. 2002-03-04 16:08:13 +00:00
Richard Levitte
5c5143de48 Make it so one can select tests from within the test directory 2002-03-04 15:58:38 +00:00
Dr. Stephen Henson
c8cd7d9e0f Fix warnings about signed/unsigned mismatch and global
shadowing (random, index) in hw_4758_cca.c
2002-03-03 17:08:20 +00:00
Richard Levitte
e0a6cdcf30 This change was only made in 0.9.7-stable. Synchronise 2002-03-03 01:25:21 +00:00
Richard Levitte
a0ecb9b8fc Remove the perl/ subdirectory. It hasn't been worked on for ages, is
very broken, and there are working modules in CPAN, which makes our
module even more moot.
2002-02-28 22:07:50 +00:00
Richard Levitte
4bf4bc784f make update 2002-02-28 20:29:20 +00:00
Bodo Möller
9437fef8cc use ERR_peek_last_error() instead of ERR_peek_error() 2002-02-28 14:07:37 +00:00
Bodo Möller
16b0384bd2 use ERR_peek_last_error() instead of ERR_peek_error() to ignore
any other errors that may be left in the error queue

Submitted by: Jeffrey Altman
2002-02-28 14:05:13 +00:00
Richard Levitte
87ebdd8a71 VMS addaptation, including a few more long names that needed hacking. 2002-02-28 13:17:40 +00:00
Richard Levitte
7d68189d8a Make sure aep_close_connection() is declared and has a prototype that's
consistent with the rest of the AEP functions
2002-02-28 12:58:43 +00:00
Richard Levitte
26414ee013 Increase internal security when using strncpy, by making sure the resulting string is NUL-terminated 2002-02-28 12:42:19 +00:00
Richard Levitte
5c62f68e14 Updated AEP engine, submitted by Diarmuid O'Neill <Diarmuid.ONeill@aep.ie> 2002-02-28 11:36:38 +00:00
Richard Levitte
0d22b5dace Document the added modes for AES 2002-02-28 11:29:55 +00:00
Bodo Möller
023ec151df Add 'void *' argument to app_verify_callback.
Submitted by: D. K. Smetters <smetters@parc.xerox.com>
Reviewed by: Bodo Moeller
2002-02-28 10:52:56 +00:00
Bodo Möller
59dbdb51dc disable '#ifdef DEBUG' sections 2002-02-28 10:51:56 +00:00
Geoff Thorpe
92d1bc09cb This adds a new ENGINE to support IBM 4758 cards, contributed by Maurice
Gittens.
2002-02-27 22:55:28 +00:00
Lutz Jänicke
d62bfb39cd Fix the fix (Yoram Zahavi)... 2002-02-27 11:23:05 +00:00
Lutz Jänicke
ce4b274aa1 SSL_clear != SSL_free/SSL_new 2002-02-27 08:08:57 +00:00
Lutz Jänicke
334f1842fc Make sure to remove bad sessions in SSL_clear() (found by Yoram Zahavi). 2002-02-26 21:40:09 +00:00
Dr. Stephen Henson
b12540520d Always init ctx_tmp in PKCS7_dataFinal since it is always cleaned up. 2002-02-26 19:33:24 +00:00
Richard Levitte
0d7b9b8b7e make update, after moving around symbols in libeay.num to match
0.9.7-stable.
2002-02-26 14:41:29 +00:00
Dr. Stephen Henson
31188ee1a8 Fix new -aes command argument handling 2002-02-26 13:46:55 +00:00
Dr. Stephen Henson
4a3e6bce79 Make the engine config module always add dynamic ENGINEs
to the list using dynamic_path. This stops ENGINEs which
don't supply any default algorithms being automatically
freed (because they have no references) and allows them
to be accessed by id.

Alternative dynamic loading behaviour can be achieved by
issuing the dynamic ENGINE ctrls separately in the config file.
2002-02-24 16:20:50 +00:00
Dr. Stephen Henson
a3829cb720 Updates from stable branch. 2002-02-23 13:50:29 +00:00
Dr. Stephen Henson
e84be9b495 New OPENSSL_LOAD_CONF define to load openssl.cnf
when OpenSSL_add_all_algorithms() is called.
2002-02-23 01:00:44 +00:00
Dr. Stephen Henson
3a3ca3f515 Fix for AIX.
Submitted by Dawn Whiteside <dwhitesi@tiercel.uwaterloo.ca>
2002-02-22 21:26:25 +00:00
Dr. Stephen Henson
032c49b8b3 non-Monolith fixes.
Submitted by Andrew W. Gray <agray@iconsinc.com>
2002-02-22 21:21:18 +00:00
Dr. Stephen Henson
3208ff58ca make errors 2002-02-22 21:17:31 +00:00
Dr. Stephen Henson
6707d22a40 Update from stable branch. 2002-02-22 14:07:35 +00:00
Dr. Stephen Henson
3647bee263 Config code updates.
CONF_modules_unload() now calls CONF_modules_finish()
automatically.

Default use of section openssl_conf moved to
CONF_modules_load()

Load config file in several openssl utilities.

Most utilities now load modules from the config file,
though in a few (such as version) this isn't done
because it couldn't be used for anything.

In the case of ca and req the config file used is
the same as the utility itself: that is the -config
command line option can be used to specify an
alternative file.
2002-02-22 14:01:21 +00:00
Richard Levitte
e2aebccba1 We have AES support in openssl speed 2002-02-21 17:23:04 +00:00
Bodo Möller
3e563bcea7 disable '#ifdef DEBUG' sections 2002-02-21 13:07:44 +00:00
Dr. Stephen Henson
92f91ff48b Config file updates from stable branch 2002-02-21 00:54:54 +00:00
Richard Levitte
b3dfaaa143 Add AES support in the applications that support -des and -des3. 2002-02-20 18:03:07 +00:00
Richard Levitte
5b7848a345 Add comfy aliases for AES in CBC mode. 2002-02-20 17:59:49 +00:00
Richard Levitte
915c6a21ba Stop assuming the IV is 8 bytes long, use the real size instead.
This is especially important for AES that has a 16 bytes IV.
2002-02-20 17:55:08 +00:00
Richard Levitte
58706d595b Including openssl/e_os.h in the OpenSSL 0.9.6 branch is legal, since
it's exported.  Changing that is a BIG step, which has been done in
0.9.7-dev.
2002-02-20 14:07:07 +00:00
Richard Levitte
236be53269 gcc figures that the format specifier %2x means unsigned int, so let's
make n unsigned.
2002-02-20 13:50:36 +00:00
Richard Levitte
1fc1bd382b Instead of casting a lvalue, let's constify meth. 2002-02-20 13:49:17 +00:00
Richard Levitte
a60033f106 Update the status on 64-bit thingy. 2002-02-20 13:19:59 +00:00
Bodo Möller
3613e6fc57 simplifications
Submitted by: Nils Larsch
2002-02-20 13:08:17 +00:00
Bodo Möller
f8e21776f9 typo 2002-02-20 12:38:00 +00:00
Richard Levitte
006723cf76 Add reports on checked 64-bit platforms and make space to add platforms that need to be checked 2002-02-20 12:31:23 +00:00
Richard Levitte
aa89bcd279 With Compaq make, it seems like # inside an action becomes part of the command, not a comment at all 2002-02-20 12:16:17 +00:00
Richard Levitte
f19759a182 Instead of just checking for OpenVMS, check if DEC C is used, since it's as
picky on all platforms
2002-02-20 12:01:24 +00:00
Bodo Möller
d009bcbfb6 bugfix: allocate sufficiently large buffer
Submitted by: Nils Larsch
2002-02-20 11:59:42 +00:00
Richard Levitte
4b71f63ac0 Comparing a pointer (data) with 0 using > is incorrect. The changed
comparison doesn't look right, but at least it compiles.  It would be nice
if the one who knows what this is supposed to do changed it to do it correctly
2002-02-20 11:57:33 +00:00
Richard Levitte
3adb8c3854 With Compaq make, it seems like # inside an action becomes part of the command, not a comment at all 2002-02-20 11:43:40 +00:00
Richard Levitte
02e666d59f Don't shadow already defined variables 2002-02-20 11:42:42 +00:00
Geoff Thorpe
5b2d6ff07e make update 2002-02-20 08:33:55 +00:00
Geoff Thorpe
877b2fbd3c A rough little self-test for tunala. This runs through all cipher-suite /
SSL/TLS version combinations looking for mishaps.
2002-02-20 05:12:45 +00:00
Geoff Thorpe
afeab58a3c Make the "ungunk" logic a little more robust. 2002-02-20 05:09:22 +00:00
Geoff Thorpe
744c49a81b - Add support for cipher suites that require a temporary RSA key for
key-agreement.
- Tolerate signal interruptions of select().
2002-02-20 05:02:50 +00:00
Richard Levitte
9c5b91fd0b Oh, and since config figures out that we run Cygwin and what versions,
let's recommend running config instead of a manual Configure.
2002-02-16 22:31:16 +00:00
Richard Levitte
290d3eab76 Since Cygwin is the proper spelling, let's change to that everywhere.
Also, with the change in Configure, it now knows on it's own if
threads are supported or not.
2002-02-16 22:28:31 +00:00
Ulf Möller
46dae77c23 Cygwin target name has been changed! 2002-02-16 16:53:25 +00:00
Richard Levitte
a6cd870784 The AES modes OFB and CFB are defined with 128 feedback bits. This
deviates from the "standard" 64 bits of feedback that all other
algorithms are using.  Therefore, let's redo certain EVP macros to
accept different amounts of feedback bits for these modes.

Also, change e_aes.c to provide all usually available modes for AES.
CTR isn't included yet.
2002-02-16 12:39:07 +00:00
Richard Levitte
97879bcd57 Add the modes OFB128, CFB128 and CTR128 to AES.
Submitted by Stephen Sprunk <stephen@sprunk.org>
2002-02-16 12:20:34 +00:00
Richard Levitte
ab1dee1efc Adjust the NID names for the AES modes OFB and CFB to contain the number
of feedback bits
2002-02-16 12:15:30 +00:00
Richard Levitte
e072aa535d The macro IMPLEMENT_ASN1_FUNCTIONS_const already contains an ending ;,
so do not add one after the expansion, since ANSI C doesn't allow ;;
at this level (or at least, so tells me gcc).
2002-02-16 12:03:25 +00:00
Richard Levitte
48f9859d2a Local time' shadows the global function time()'. Rename the local
variable to `tim' (and, as a matter of consequence, `time_d' to `tim_d').
2002-02-16 12:01:13 +00:00
Richard Levitte
48b5083ca0 Missing #endif 2002-02-16 11:58:16 +00:00
Richard Levitte
cd64618674 gcc chokes on C++ comments in C code. 2002-02-16 11:57:25 +00:00
Richard Levitte
5d7e960adf Give the linux-sparv9 target shared capability.
Submitted by Ian Marsh <mushypea@dominion.net.uk>
2002-02-15 16:22:22 +00:00
331 changed files with 23716 additions and 7610 deletions

3124
CHANGES

File diff suppressed because it is too large Load Diff

View File

@@ -144,6 +144,7 @@ my %table=(
"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -m486 -pedantic -Wshadow -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
"debug-ulf", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O2 -m486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT:::${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -mcpu=i486 -pedantic -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
"debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT::dlfcn",
"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wid-clash-31 -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wid-clash-31 -Wno-long-long -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"dist", "cc:-O::(unknown)::::::",
@@ -198,7 +199,7 @@ my %table=(
"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o::::",
# it's a real mess with -mcpu=ultrasparc option under Linux, but
# -Wa,-Av8plus should do the trick no matter what.
"linux-sparcv9","gcc:-mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o:",
"linux-sparcv9","gcc:-mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
# !!!Folowing can't be even tested yet!!!
# We have to wait till 64-bit glibc for SPARC is operational!!!
#"linux64-sparcv9","sparc64-linux-gcc:-m64 -mcpu=v9 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT:ULTRASPARC::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::asm/md5-sparcv9.o:",
@@ -373,6 +374,7 @@ my %table=(
"linux-pentium", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-ppro", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-k6", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=k6 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
@@ -434,7 +436,7 @@ my %table=(
"aix43-gcc", "gcc:-O3 -DAIX -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR::::::::::dlfcn:",
#
# Cray T90 (SDSC)
# Cray T90 and similar (SDSC)
# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT
# defined. The T90 ints and longs are 8 bytes long, and apparently the
# B_ENDIAN code assumes 4 byte ints. Fortunately, the non-B_ENDIAN and
@@ -444,7 +446,10 @@ my %table=(
#'Taking the address of a bit field is not allowed. '
#'An expression with bit field exists as the operand of "sizeof" '
# (written by Wayne Schroeder <schroede@SDSC.EDU>)
"cray-t90-cc", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
#
# j90 is considered the base machine type for unicos machines,
# so this configuration is now called "cray-j90" ...
"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
#
# Cray T3E (Research Center Juelich, beckman@acl.lanl.gov)
@@ -514,10 +519,17 @@ my %table=(
##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
# Some OpenBSD from Bob Beck <beck@obtuse.com>
"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-mips","gcc:-O2 -DL_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-alpha", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-m68k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-m88k", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-mips", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-powerpc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2 BF_PTR::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-vax", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"OpenBSD-hppa", "gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
##### MacOS X (a.k.a. Rhapsody or Darwin) setup
"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
@@ -912,11 +924,11 @@ my $bn_ops = $fields[$idx_bn_ops];
my $bn_obj = $fields[$idx_bn_obj];
my $des_obj = $fields[$idx_des_obj];
my $bf_obj = $fields[$idx_bf_obj];
my $md5_obj = $fields[$idx_md5_obj];
my $sha1_obj = $fields[$idx_sha1_obj];
$md5_obj = $fields[$idx_md5_obj];
$sha1_obj = $fields[$idx_sha1_obj];
my $cast_obj = $fields[$idx_cast_obj];
my $rc4_obj = $fields[$idx_rc4_obj];
my $rmd160_obj = $fields[$idx_rmd160_obj];
$rmd160_obj = $fields[$idx_rmd160_obj];
my $rc5_obj = $fields[$idx_rc5_obj];
my $dso_scheme = $fields[$idx_dso_scheme];
my $shared_target = $fields[$idx_shared_target];

10
FAQ
View File

@@ -29,6 +29,7 @@ OpenSSL - Frequently Asked Questions
* Why can't I use OpenSSL certificates with SSL client authentication?
* Why does my browser give a warning about a mismatched hostname?
* How do I install a CA certificate into a browser?
* Why is OpenSSL x509 DN output not conformant to RFC2253?
[BUILD] Questions about building and testing OpenSSL
@@ -59,7 +60,7 @@ OpenSSL - Frequently Asked Questions
* Which is the current version of OpenSSL?
The current version is available from <URL: http://www.openssl.org>.
OpenSSL 0.9.6c was released on December 21st, 2001.
OpenSSL 0.9.6d was released on May 9, 2002.
In addition to the current stable release, you can also access daily
snapshots of the OpenSSL development version at <URL:
@@ -343,6 +344,13 @@ DO NOT DO THIS! This command will give away your CAs private key and
reduces its security to zero: allowing anyone to forge certificates in
whatever name they choose.
* Why is OpenSSL x509 DN output not conformant to RFC2253?
The ways to print out the oneline format of the DN (Distinguished Name) have
been extended in version 0.9.7 of OpenSSL. Using the new X509_NAME_print_ex()
interface, the "-nameopt" option could be introduded. See the manual
page of the "openssl x509" commandline tool for details. The old behaviour
has however been left as default for the sake of compatibility.
[BUILD] =======================================================================

View File

@@ -6,15 +6,15 @@
of this is tested on Win32 but it may also work in Win 3.1 with some
modification.
You need Perl for Win32. Unless you will build on CygWin32, you will need
You need Perl for Win32. Unless you will build on Cygwin, you will need
ActiveState Perl, available from http://www.activestate.com/ActivePerl.
For CygWin32 users, there's more info in the CygWin32 section.
For Cygwin users, there's more info in the Cygwin section.
and one of the following C compilers:
* Visual C++
* Borland C
* GNU C (Mingw32 or Cygwin32)
* GNU C (Mingw32 or Cygwin)
If you want to compile in the assembly language routines with Visual C++ then
you will need an assembler. This is worth doing because it will result in
@@ -81,7 +81,7 @@
There are various changes you can make to the Win32 compile environment. By
default the library is not compiled with debugging symbols. If you add 'debug'
to the mk1mk.pl lines in the do_* batch file then debugging symbols will be
to the mk1mf.pl lines in the do_* batch file then debugging symbols will be
compiled in.
The default Win32 environment is to leave out any Windows NT specific
@@ -112,10 +112,10 @@
* Compiler installation:
Mingw32 is available from <ftp://ftp.xraylith.wisc.edu/pub/khan/
gnu-win32/mingw32/gcc-2.95.2/gcc-2.95.2-msvcrt.exe>. GNU make is at
<ftp://agnes.dida.physik.uni-essen.de/home/janjaap/mingw32/binaries/
make-3.76.1.zip>. Install both of them in C:\egcs-1.1.2 and run
C:\egcs-1.1.2\mingw32.bat to set the PATH.
gnu-win32/mingw32/gcc-2.95.2/gcc-2.95.2-msvcrt.exe>. Extract it
to a directory such as C:\gcc-2.95.2 and add c:\gcc-2.95.2\bin to
the PATH environment variable in "System Properties"; or edit and
run C:\gcc-2.95.2\mingw32.bat to set the PATH.
* Compile OpenSSL:
@@ -137,30 +137,30 @@
> cd out
> ..\ms\test
GNU C (CygWin32)
---------------
GNU C (Cygwin)
--------------
CygWin32 provides a bash shell and GNU tools environment running on
Cygwin provides a bash shell and GNU tools environment running on
NT 4.0, Windows 9x and Windows 2000. Consequently, a make of OpenSSL
with CygWin is closer to a GNU bash environment such as Linux rather
with Cygwin is closer to a GNU bash environment such as Linux rather
than other W32 makes that are based on a single makefile approach.
CygWin32 implements Posix/Unix calls through cygwin1.dll, and is
Cygwin implements Posix/Unix calls through cygwin1.dll, and is
contrasted to Mingw32 which links dynamically to msvcrt.dll or
crtdll.dll.
To build OpenSSL using CygWin32:
To build OpenSSL using Cygwin:
* Install CygWin32 (see http://sourceware.cygnus.com/cygwin)
* Install Cygwin (see http://sourceware.cygnus.com/cygwin)
* Install Perl and ensure it is in the path (recent Cygwin perl
(version 5.6.1-2 of the latter has been reported to work) or
ActivePerl)
* Run the CygWin bash shell
* Run the Cygwin bash shell
* $ tar zxvf openssl-x.x.x.tar.gz
$ cd openssl-x.x.x
$ ./Configure no-threads CygWin32
$ ./config
[...]
$ make
[...]
@@ -169,26 +169,26 @@
This will create a default install in /usr/local/ssl.
CygWin32 Notes:
Cygwin Notes:
"make test" and normal file operations may fail in directories
mounted as text (i.e. mount -t c:\somewhere /home) due to CygWin
mounted as text (i.e. mount -t c:\somewhere /home) due to Cygwin
stripping of carriage returns. To avoid this ensure that a binary
mount is used, e.g. mount -b c:\somewhere /home.
As of version 1.1.1 CygWin32 is relatively unstable in its handling
As of version 1.1.1 Cygwin is relatively unstable in its handling
of cr/lf issues. These make procedures succeeded with versions 1.1 and
the snapshot 20000524 (Slow!).
"bc" is not provided in the CygWin32 distribution. This causes a
"bc" is not provided in the Cygwin distribution. This causes a
non-fatal error in "make test" but is otherwise harmless. If
desired, GNU bc can be built with CygWin32 without change.
desired, GNU bc can be built with Cygwin without change.
Installation
------------
If you used the CygWin procedure above, you have already installed and
If you used the Cygwin procedure above, you have already installed and
can skip this section. For all other procedures, there's currently no real
installation procedure for Win32. There are, however, some suggestions:

View File

@@ -12,7 +12,7 @@
---------------
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions

View File

@@ -266,6 +266,7 @@ do_gnu-shared:
( set -x; ${CC} ${SHARED_LDFLAGS} \
-shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
-Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
-Wl,-Bsymbolic \
-Wl,--whole-archive lib$$i.a \
-Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
libs="$$libs -l$$i"; \
@@ -292,6 +293,7 @@ do_darwin-shared:
do_cygwin-shared:
libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
( set -x; ${CC} -shared -o cyg$$i.dll \
-Wl,-Bsymbolic \
-Wl,--whole-archive lib$$i.a \
-Wl,--out-implib,lib$$i.dll.a \
-Wl,--no-whole-archive $$libs ) || exit 1; \
@@ -653,7 +655,7 @@ tar:
tar-snap:
@$(TAR) $(TARFLAGS) -cvf - \
`find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*' \! -name 'openssl' \! -name '*test' \! -name '.#*' | sort` |\
`find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*' \! -name 'openssl' \! -name '*test' \! -name '.#*' \! -name '*~' | sort` |\
tardy --user_number=0 --user_name=openssl \
--group_number=0 --group_name=openssl \
--prefix=openssl-$(VERSION) - > ../$(TARFILE);\
@@ -695,8 +697,8 @@ install: all install_docs
cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
fi \
done
fi; \
done;
@if [ -n "$(SHARED_LIBS)" ]; then \
tmp="$(SHARED_LIBS)"; \
for i in $${tmp:-x}; \
@@ -713,7 +715,7 @@ install: all install_docs
cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
fi ); \
fi \
fi; \
done; \
( here="`pwd`"; \
cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \

39
NEWS
View File

@@ -8,11 +8,44 @@
Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.7:
o New library section OCSP.
o Complete haul-over of the ASN.1 library section.
o Complete rewrite of ASN1 code.
o CRL checking in verify code and openssl utility.
o Extension copying in 'ca' utility.
o Flexible display options in 'ca' utility.
o Provisional support for international characters with UTF8.
o Support for external crypto devices ('engine') is no longer
a separate distribution.
o New elliptic curve library section.
o New AES (Rijndael) library section.
o Change DES API to clean up the namespace (some applications link also
against libdes providing similar functions having the same name).
Provide macros for backward compatibility (will be removed in the
future).
o Unifiy handling of cryptographic algorithms (software and
engine) to be available via EVP routines for asymmetric and
symmetric ciphers.
o NCONF: new configuration handling routines.
o Change API to use more 'const' modifiers to improve error checking
and help optimizers.
o Finally remove references to RSAref.
o Reworked parts of the BIGNUM code.
o Support for new engines: Broadcom ubsec, Accelerated Encryption
Processing, IBM 4758.
o PRNG: query at more locations for a random device, automatic query for
EGD style random sources at several locations.
o SSL/TLS: allow optional cipher choice according to server's preference.
o SSL/TLS: allow server to explicitly set new session ids.
o SSL/TLS: support Kerberos cipher suites (RFC2712).
o SSL/TLS: allow more precise control of renegotiations and sessions.
o SSL/TLS: add callback to retrieve SSL/TLS messages.
o SSL/TLS: add draft AES ciphersuites (disabled unless explicitly requested).
Changes between OpenSSL 0.9.6b and OpenSSL 0.9.6c:
Major changes between OpenSSL 0.9.6c and OpenSSL 0.9.6d:
o Various SSL/TLS library bugfixes.
o Fix DH parameter generation for 'non-standard' generators.
Major changes between OpenSSL 0.9.6b and OpenSSL 0.9.6c:
o Various SSL/TLS library bugfixes.
o BIGNUM library fixes.
@@ -25,7 +58,7 @@
Broadcom and Cryptographic Appliance's keyserver
[in 0.9.6c-engine release].
Changes between OpenSSL 0.9.6a and OpenSSL 0.9.6b:
Major changes between OpenSSL 0.9.6a and OpenSSL 0.9.6b:
o Security fix: PRNG improvements.
o Security fix: RSA OAEP check.

2
README
View File

@@ -1,5 +1,5 @@
OpenSSL 0.9.8-dev 24 Sep 2000
OpenSSL 0.9.8-dev XX xxx XXXX
Copyright (c) 1998-2002 The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson

44
STATUS
View File

@@ -1,10 +1,11 @@
OpenSSL STATUS Last modified at
______________ $Date: 2002/02/13 10:21:25 $
______________ $Date: 2002/05/16 10:01:53 $
DEVELOPMENT STATE
o OpenSSL 0.9.7: Under development...
o OpenSSL 0.9.6d: Released on May 9th, 2002
o OpenSSL 0.9.6c: Released on December 21st, 2001
o OpenSSL 0.9.6b: Released on July 9th, 2001
o OpenSSL 0.9.6a: Released on April 5th, 2001
@@ -17,10 +18,12 @@
o OpenSSL 0.9.2b: Released on March 22th, 1999
o OpenSSL 0.9.1c: Released on December 23th, 1998
[See also http://www.openssl.org/support/rt2.html]
RELEASE SHOWSTOPPERS
o BIGNUM library failures on 64-bit platforms (0.9.7-dev):
- BN_mod_mul verificiation (bc) fails for solaris64-sparcv9-cc
o BN_mod_mul verification fails for mips3-sgi-irix
unless configured with no-asm
AVAILABLE PATCHES
@@ -49,28 +52,15 @@
NEEDS PATCH
o An (optional) countermeasure against the predictable-IV CBC
weakness in SSL/TLS should be added; see
http://www.openssl.org/~bodo/tls-cbc.txt
o All 'openssl' subprograms taking '-des' and '-des3' options should
include AES support (0.9.7-dev)
o 'openssl speed' should include AES support (0.9.7-dev)
o apps/ca.c: "Sign the certificate?" - "n" creates empty certificate file
o OpenSSL_0_9_6-stable:
#include <openssl/e_os.h> in exported header files is illegal since
e_os.h is suitable only for library-internal use.
o Whenever strncpy is used, make sure the resulting string is NULL-terminated
or an error is reported
o "OpenSSL STATUS" is never up-to-date.
OPEN ISSUES
o Do we want the EVP API changes in 0.9.7?
Can compatibility be improved?
o The Makefile hierarchy and build mechanism is still not a round thing:
1. The config vs. Configure scripts
@@ -95,22 +85,6 @@
which apparently is not flexible enough to generate
libcrypto)
o The perl/ stuff needs a major overhaul. Currently it's
totally obsolete. Either we clean it up and enhance it to be up-to-date
with the C code or we also could replace it with the really nice
Net::SSLeay package we can find under
http://www.neuronio.pt/SSLeay.pm.html. Ralf uses this package for a
longer time and it works fine and is a nice Perl module. Best would be
to convince the author to work for the OpenSSL project and create a
Net::OpenSSL or Crypt::OpenSSL package out of it and maintains it for
us.
Status: Ralf thinks we should both contact the author of Net::SSLeay
and look how much effort it is to bring Eric's perl/ stuff up
to date.
Paul +1
WISHES
o Add variants of DH_generate_parameters() and BN_generate_prime() [etc?]

267
TABLE
View File

@@ -1,4 +1,3 @@
Output of `Configure TABLE':
*** BC-16
$cc = bcc
@@ -367,7 +366,7 @@ $unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
@@ -408,14 +407,62 @@ $shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-mips
*** OpenBSD-hppa
$cc = gcc
$cflags = -O2 -DL_ENDIAN
$cflags = -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags = BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR
$bn_ops =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$shared_extension =
$ranlib =
*** OpenBSD-i386
$cc = gcc
$cflags = -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
$bn_obj = asm/bn86-out.o asm/co86-out.o
$des_obj = asm/dx86-out.o asm/yx86-out.o
$bf_obj = asm/bx86-out.o
$md5_obj = asm/mx86-out.o
$sha1_obj = asm/sx86-out.o
$cast_obj = asm/cx86-out.o
$rc4_obj = asm/rx86-out.o
$rmd160_obj = asm/rm86-out.o
$rc5_obj = asm/r586-out.o
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-m68k
$cc = gcc
$cflags = -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
@@ -432,23 +479,143 @@ $shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-x86
*** OpenBSD-m88k
$cc = gcc
$cflags = -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486
$cflags = -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
$bn_obj = asm/bn86-out.o asm/co86-out.o
$des_obj = asm/dx86-out.o asm/yx86-out.o
$bf_obj = asm/bx86-out.o
$md5_obj = asm/mx86-out.o
$sha1_obj = asm/sx86-out.o
$cast_obj = asm/cx86-out.o
$rc4_obj = asm/rx86-out.o
$rmd160_obj = asm/rm86-out.o
$rc5_obj = asm/r586-out.o
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-mips
$cc = gcc
$cflags = -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-powerpc
$cc = gcc
$cflags = -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-sparc
$cc = gcc
$cflags = -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-sparc64
$cc = gcc
$cflags = -DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2 BF_PTR
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** OpenBSD-vax
$cc = gcc
$cflags = -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer
$unistd =
$thread_cflag = (unknown)
$sys_id =
$lflags =
$bn_ops = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme = dlfcn
$shared_target= bsd-gcc-shared
$shared_cflag = -fPIC
@@ -1056,14 +1223,14 @@ $shared_ldflag =
$shared_extension =
$ranlib =
*** cray-t3e
*** cray-j90
$cc = cc
$cflags = -DBIT_FIELD_LIMITS -DTERMIOS
$unistd =
$thread_cflag = (unknown)
$sys_id = CRAY
$lflags =
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT
$bn_ops = SIXTY_FOUR_BIT_LONG DES_INT
$bn_obj =
$des_obj =
$bf_obj =
@@ -1080,14 +1247,14 @@ $shared_ldflag =
$shared_extension =
$ranlib =
*** cray-t90-cc
*** cray-t3e
$cc = cc
$cflags = -DBIT_FIELD_LIMITS -DTERMIOS
$unistd =
$thread_cflag = (unknown)
$sys_id = CRAY
$lflags =
$bn_ops = SIXTY_FOUR_BIT_LONG DES_INT
$bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT
$bn_obj =
$des_obj =
$bf_obj =
@@ -1416,6 +1583,30 @@ $shared_ldflag =
$shared_extension =
$ranlib =
*** debug-linux-pentium
$cc = gcc
$cflags = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall
$unistd =
$thread_cflag = -D_REENTRANT
$sys_id =
$lflags = -ldl
$bn_ops = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
$bn_obj = asm/bn86-elf.o asm/co86-elf.o
$des_obj = asm/dx86-elf.o asm/yx86-elf.o
$bf_obj = asm/bx86-elf.o
$md5_obj = asm/mx86-elf.o
$sha1_obj = asm/sx86-elf.o
$cast_obj = asm/cx86-elf.o
$rc4_obj = asm/rx86-elf.o
$rmd160_obj = asm/rm86-elf.o
$rc5_obj = asm/r586-elf.o
$dso_scheme = dlfcn
$shared_target=
$shared_cflag =
$shared_ldflag =
$shared_extension =
$ranlib =
*** debug-linux-ppro
$cc = gcc
$cflags = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall
@@ -2825,10 +3016,10 @@ $cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme =
$shared_target=
$shared_cflag =
$shared_ldflag =
$dso_scheme = dlfcn
$shared_target= linux-shared
$shared_cflag = -fPIC
$shared_ldflag = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$shared_extension =
$ranlib =
@@ -3695,3 +3886,27 @@ $shared_cflag = -Kpic
$shared_ldflag =
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib =
*** vxworks-ppc405
$cc = ccppc
$cflags = -g -msoft-float -mlongcall -DCPU=PPC405 -I$(WIND_BASE)/target/h
$unistd =
$thread_cflag =
$sys_id = VXWORKS
$lflags = -r
$bn_ops =
$bn_obj =
$des_obj =
$bf_obj =
$md5_obj =
$sha1_obj =
$cast_obj =
$rc4_obj =
$rmd160_obj =
$rc5_obj =
$dso_scheme =
$shared_target=
$shared_cflag =
$shared_ldflag =
$shared_extension =
$ranlib =

477
VMS/cert_tool/hostaddr.c Normal file
View File

@@ -0,0 +1,477 @@
#ifdef VMS
#pragma module HOSTADDR "X-1"
/*
**
** Copyright (c) 2000 Compaq Computer Corporation
** COMPAQ Registered in U.S. Patent and Trademark Office.
**
** Confidential computer software. Valid license from Compaq or
** authorized sublicensor required for possession, use or copying.
** Consistent with FAR 12.211 and 12.212, Commercial Computer Software,
** Computer Software Documentation, and Technical Data for Commercial
** Items are licensed to the U.S. Government under vendor's standard
** commercial license.
**
*/
/*
**++
**
** FACILITY: Apache Web Server
**
** ABSTRACT:
**
** This program determine the hostaddr of the default node or of
** a given hostname.
**
** The command line syntax is:
**
** HOSTADDR [-l log-name] [-s sym-name] [host-name]
**
** where:
**
** -l log-name specifies an optional logical name to receive hostname.
**
** -c sym-name specifies an optional symbol name to receive hostname.
**
** host-name specifies an optional host name to resolve.
**
** AUTHOR: Matthew Doremus CREATION DATE: 07-Jul-2000
**
** Modification History:
**
** X-1 Matthew Doremus 07-Jul-2000
** Initial development
**
**--
**
** Compile/Link instructions:
**
** OpenVMS Alpha/VAX:
** $ CC HOSTADDR+SYS$LIBRARY:SYS$LIB_C/LIBRARY
** $ LINK HOSTADDR
**
*/
/*
** Define __NEW_STARLET if it's not already defined
*/
#ifndef __NEW_STARLET
#define __NEW_STARLET
#define __NEW_STARLET_SET
#endif
/*
** Include the necessary header files
*/
#include <lib$routines>
#include <libclidef>
#include <descrip>
#include <stdlib>
#include <string>
#include <stdio>
#include <netdb>
#include <in>
/*
** Undefine __NEW_STARLET if we had defined it
*/
#ifndef __NEW_STARLET_SET
#undef __NEW_STARLET_SET
#undef __NEW_STARLET
#endif
/*
** Option Data Structure
*/
typedef struct _opt_data {
char *log_name;
char *sym_name;
char *host_name;
} OPT_DATA;
/*
** Local Routine Prototypes
*/
static void
ParseCmdLine (
int,
char *[],
OPT_DATA *);
static void
SetLogName (
char *,
char *);
static void
SetSymName (
char *,
char *);
static void
Usage ();
/*
**
** main - Main processing routine for the HOSTADDR utility
**
** Functional Description:
**
** This routine controls overall program execution.
**
** Usage:
**
** main argc, argv, envp
**
** Formal parameters:
**
** argc - (IN) argument count
** argv - (IN) address of an argument array
** envp - (IN) address of an environment string
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
int
main (
int argc,
char *argv[],
char *envp[]
)
{
struct in_addr *addr_ptr;
char hostname[512+1];
struct hostent *hp;
OPT_DATA OptData;
char *hostaddr;
int addr_max,
i;
/*
** Parse the command line
*/
ParseCmdLine (argc, argv, &OptData);
/*
** If no host name was given, then use gethostname otherwise
** use the host name given.
*/
if (! OptData.host_name)
{
if (gethostname (hostname, sizeof (hostname) - 1))
{
perror ("gethostname");
exit (1);
}
}
else
strcpy (hostname, OptData.host_name);
/*
** Get the host address using gethostbyname
*/
if (! (hp = gethostbyname (hostname)))
{
perror ("gethostbyname");
exit (1);
}
/*
** Format the host address(es) into a comma separated list
*/
addr_max = hp->h_length / sizeof (struct in_addr);
hostaddr = malloc ((addr_max * (15 + 1)) + 1);
addr_ptr = (struct in_addr *) hp->h_addr;
for (i = 0; i < addr_max; i++)
{
if (i > 0)
strcat (hostaddr, ",");
addr_ptr = addr_ptr + (i * sizeof (struct in_addr));
sprintf (hostaddr + strlen (hostaddr), "%d.%d.%d.%d",
addr_ptr->s_net, addr_ptr->s_host,
addr_ptr->s_lh, addr_ptr->s_impno);
}
/*
** Define a logical name if one was provided
*/
if (OptData.log_name)
SetLogName (OptData.log_name, hostaddr);
/*
** Define a symbol name if one was provided
*/
if (OptData.sym_name)
SetSymName (OptData.sym_name, hostaddr);
/*
** print the host address if no logical or symbol name was provided
*/
if (! OptData.log_name && ! OptData.sym_name)
printf ("%s\n", hostaddr);
}
/*
**
** ParseCmdLine - Parse the command line options
**
** Functional Description:
**
** This routine parses the command line options.
**
** Usage:
**
** ParseCmdLine argc, argv, OptData
**
** Formal parameters:
**
** argc - (IN) argument count
** argv - (IN) address of an argument array
** OptData - (OUT) address of command option data structure
** which will contain the parsed input.
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
ParseCmdLine (
int argc,
char *argv[],
OPT_DATA *OptData
)
{
int option,
i;
/*
** Initialize the option data
*/
OptData->log_name = NULL;
OptData->sym_name = NULL;
OptData->host_name = NULL;
/*
** Process the command line options
*/
while ((option = getopt (argc, argv, "l:s:?")) != EOF)
{
switch (option)
{
/*
** Output to logical name ?
*/
case 'l':
OptData->log_name = strdup (optarg);
break;
/*
** Output to symbol name ?
*/
case 's':
OptData->sym_name = strdup (optarg);
break;
/*
** Invalid argument ?
*/
case '?':
default:
Usage ();
exit (1);
break;
}
}
/*
** Are the number of parameters correct ?
*/
if (argc - optind > 1)
{
Usage ();
exit (1);
}
/*
** Host Name provided ?
*/
if (argc - optind == 1)
OptData->host_name = strdup (argv[optind]);
}
/*
**
** SetLogName - Set a logical name & value
**
** Functional Description:
**
** This routine sets a logical name & value.
**
** Usage:
**
** SetLogName LogName, LogValue
**
** Formal parameters:
**
** LogName - (IN) address of the logical name
** LogValue - (IN) address of the logical value
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
SetLogName (
char *LogName,
char *LogValue
)
{
struct dsc$descriptor_s log_nam_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
struct dsc$descriptor_s log_val_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
int status;
/*
** Setup the logical name & value descriptors
*/
log_nam_desc.dsc$w_length = strlen (LogName);
log_nam_desc.dsc$a_pointer = LogName;
log_val_desc.dsc$w_length = strlen (LogValue);
log_val_desc.dsc$a_pointer = LogValue;
/*
** Set the logical name & value
*/
status = lib$set_logical (&log_nam_desc, &log_val_desc, 0, 0, 0);
if (! (status & 1))
exit (status);
}
/*
**
** SetSymName - Set a symbol name & value
**
** Functional Description:
**
** This routine sets a symbol name & value.
**
** Usage:
**
** SetSymName SymName, SymValue
**
** Formal parameters:
**
** SymName - (IN) address of the symbol name
** SymValue - (IN) address of the Symbol value
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
SetSymName (
char *SymName,
char *SymValue
)
{
struct dsc$descriptor_s sym_nam_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
struct dsc$descriptor_s sym_val_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
int status;
/*
** Setup the symbol name & value descriptors
*/
sym_nam_desc.dsc$w_length = strlen (SymName);
sym_nam_desc.dsc$a_pointer = SymName;
sym_val_desc.dsc$w_length = strlen (SymValue);
sym_val_desc.dsc$a_pointer = SymValue;
/*
** Set the symbol name & value
*/
status = lib$set_symbol (&sym_nam_desc, &sym_val_desc, &LIB$K_CLI_LOCAL_SYM);
if (! (status & 1))
exit (status);
}
/*
**
** Usage - Display the acceptable unix style command usage
**
** Functional Description:
**
** This routine displays to standard output the appropriate unix style
** command usage.
**
** Usage:
**
** Usage
**
** Formal parameters:
**
** None
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
Usage ()
{
fprintf (stdout, "Usage: HOSTADDR [-l log-name] [-s sym-name] [host-name]\n");
}
#endif /* #ifdef VMS */

513
VMS/cert_tool/hostname.c Normal file
View File

@@ -0,0 +1,513 @@
#ifdef VMS
#pragma module HOSTNAME "X-1"
/*
**
** Copyright (c) 2000 Compaq Computer Corporation
** COMPAQ Registered in U.S. Patent and Trademark Office.
**
** Confidential computer software. Valid license from Compaq or
** authorized sublicensor required for possession, use or copying.
** Consistent with FAR 12.211 and 12.212, Commercial Computer Software,
** Computer Software Documentation, and Technical Data for Commercial
** Items are licensed to the U.S. Government under vendor's standard
** commercial license.
**
*/
/*
**++
**
** FACILITY: Apache Web Server
**
** ABSTRACT:
**
** This program determine the hostname of the default node or of
** a given hostaddr.
**
** The command line syntax is:
**
** HOSTNAME [-l log-name] [-s sym-name] [host-addr]
**
** where:
**
** -l log-name specifies an optional logical name to receive hostname.
**
** -c sym-name specifies an optional symbol name to receive hostname.
**
** host-addr specifies an optional host address to resolve.
**
** AUTHOR: Matthew Doremus CREATION DATE: 07-Jul-2000
**
** Modification History:
**
** X-1 Matthew Doremus 07-Jul-2000
** Initial development
**
**--
**
** Compile/Link instructions:
**
** OpenVMS Alpha/VAX:
** $ CC HOSTNAME+SYS$LIBRARY:SYS$LIB_C/LIBRARY
** $ LINK HOSTNAME
**
*/
/*
** Define __NEW_STARLET if it's not already defined
*/
#ifndef __NEW_STARLET
#define __NEW_STARLET
#define __NEW_STARLET_SET
#endif
/*
** Include the necessary header files
*/
#include <lib$routines>
#include <libclidef>
#include <descrip>
#include <stdlib>
#include <string>
#include <stdio>
#include <netdb>
#include <in>
#include <socket>
/*
** Undefine __NEW_STARLET if we had defined it
*/
#ifndef __NEW_STARLET_SET
#undef __NEW_STARLET_SET
#undef __NEW_STARLET
#endif
/*
** Option Data Structure
*/
typedef struct _opt_data {
char *log_name;
char *sym_name;
unsigned char host_addr[4];
} OPT_DATA;
/*
** Local Routine Prototypes
*/
static void
ParseCmdLine (
int,
char *[],
OPT_DATA *);
static void
SetLogName (
char *,
char *);
static void
SetSymName (
char *,
char *);
static void
Usage ();
/*
**
** main - Main processing routine for the HOSTNAME utility
**
** Functional Description:
**
** This routine controls overall program execution.
**
** Usage:
**
** main argc, argv, envp
**
** Formal parameters:
**
** argc - (IN) argument count
** argv - (IN) address of an argument array
** envp - (IN) address of an environment string
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
int
main (
int argc,
char *argv[],
char *envp[]
)
{
struct in_addr host_addr;
char hostname[512+1];
struct hostent *hp;
OPT_DATA OptData;
int i;
/*
** Parse the command line
*/
ParseCmdLine (argc, argv, &OptData);
/*
** If no host address was given, then use gethostname otherwise
** use gethostbyaddr.
*/
if (! OptData.host_addr[0] && ! OptData.host_addr[1] &&
! OptData.host_addr[2] && ! OptData.host_addr[3])
{
if (gethostname (hostname, sizeof (hostname) - 1))
{
perror ("gethostname");
exit (1);
}
if (! (hp = gethostbyname (hostname)))
{
perror ("gethostbyname");
exit (1);
}
}
else
{
host_addr.s_net = OptData.host_addr[0];
host_addr.s_host = OptData.host_addr[1];
host_addr.s_lh = OptData.host_addr[2];
host_addr.s_impno = OptData.host_addr[3];
if (! (hp = gethostbyaddr (&host_addr, sizeof (host_addr), AF_INET)))
{
perror ("gethostbyaddr");
exit (1);
}
}
/*
** Let's try to determine the best available fully qualified hostname.
*/
if (hp->h_name)
{
strcpy (hostname, hp->h_name);
if (! strchr (hostname, '.'))
{
for (i = 0; hp->h_aliases[i]; i++)
{
if (strchr (hp->h_aliases[i], '.') &&
! strncasecmp (hp->h_aliases[i], hostname, strlen (hostname)))
{
strcpy (hostname, hp->h_aliases[i]);
break;
}
}
}
}
else
strcpy (hostname, "(unavailable)");
/*
** Define a logical name if one was provided
*/
if (OptData.log_name)
SetLogName (OptData.log_name, hostname);
/*
** Define a symbol name if one was provided
*/
if (OptData.sym_name)
SetSymName (OptData.sym_name, hostname);
/*
** print the host name if no logical or symbol name was provided
*/
if (! OptData.log_name && ! OptData.sym_name)
printf ("%s\n", hostname);
}
/*
**
** ParseCmdLine - Parse the command line options
**
** Functional Description:
**
** This routine parses the command line options.
**
** Usage:
**
** ParseCmdLine argc, argv, OptData
**
** Formal parameters:
**
** argc - (IN) argument count
** argv - (IN) address of an argument array
** OptData - (OUT) address of command option data structure
** which will contain the parsed input.
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
ParseCmdLine (
int argc,
char *argv[],
OPT_DATA *OptData
)
{
int option,
i;
/*
** Initialize the option data
*/
OptData->log_name = NULL;
OptData->sym_name = NULL;
OptData->host_addr[0] = 0;
OptData->host_addr[1] = 0;
OptData->host_addr[2] = 0;
OptData->host_addr[3] = 0;
/*
** Process the command line options
*/
while ((option = getopt (argc, argv, "l:s:?")) != EOF)
{
switch (option)
{
/*
** Output to logical name ?
*/
case 'l':
OptData->log_name = strdup (optarg);
break;
/*
** Output to symbol name ?
*/
case 's':
OptData->sym_name = strdup (optarg);
break;
/*
** Invalid argument ?
*/
case '?':
default:
Usage ();
exit (1);
break;
}
}
/*
** Are the number of parameters correct ?
*/
if (argc - optind > 1)
{
Usage ();
exit (1);
}
/*
** Host Address provided ?
*/
if (argc - optind == 1)
{
char *addr_ptr = argv[optind],
*addr_sep;
for (i = 0; i < 4; i++)
{
if ((addr_sep = strchr (addr_ptr, '.')) && (i < 3))
*addr_sep = '\0';
if (strlen (addr_ptr) == 0 || atoi (addr_ptr) > 255 ||
strspn (addr_ptr, "0123456789") != strlen (addr_ptr))
{
printf ("Invalid TCP/IP address format.\n");
exit (1);
}
OptData->host_addr[i] = atoi (addr_ptr);
if (addr_sep)
addr_ptr = addr_sep + 1;
}
}
}
/*
**
** SetLogName - Set a logical name & value
**
** Functional Description:
**
** This routine sets a logical name & value.
**
** Usage:
**
** SetLogName LogName, LogValue
**
** Formal parameters:
**
** LogName - (IN) address of the logical name
** LogValue - (IN) address of the logical value
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
SetLogName (
char *LogName,
char *LogValue
)
{
struct dsc$descriptor_s log_nam_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
struct dsc$descriptor_s log_val_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
int status;
/*
** Setup the logical name & value descriptors
*/
log_nam_desc.dsc$w_length = strlen (LogName);
log_nam_desc.dsc$a_pointer = LogName;
log_val_desc.dsc$w_length = strlen (LogValue);
log_val_desc.dsc$a_pointer = LogValue;
/*
** Set the logical name & value
*/
status = lib$set_logical (&log_nam_desc, &log_val_desc, 0, 0, 0);
if (! (status & 1))
exit (status);
}
/*
**
** SetSymName - Set a symbol name & value
**
** Functional Description:
**
** This routine sets a symbol name & value.
**
** Usage:
**
** SetSymName SymName, SymValue
**
** Formal parameters:
**
** SymName - (IN) address of the symbol name
** SymValue - (IN) address of the Symbol value
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
SetSymName (
char *SymName,
char *SymValue
)
{
struct dsc$descriptor_s sym_nam_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
struct dsc$descriptor_s sym_val_desc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
int status;
/*
** Setup the symbol name & value descriptors
*/
sym_nam_desc.dsc$w_length = strlen (SymName);
sym_nam_desc.dsc$a_pointer = SymName;
sym_val_desc.dsc$w_length = strlen (SymValue);
sym_val_desc.dsc$a_pointer = SymValue;
/*
** Set the symbol name & value
*/
status = lib$set_symbol (&sym_nam_desc, &sym_val_desc, &LIB$K_CLI_LOCAL_SYM);
if (! (status & 1))
exit (status);
}
/*
**
** Usage - Display the acceptable unix style command usage
**
** Functional Description:
**
** This routine displays to standard output the appropriate unix style
** command usage.
**
** Usage:
**
** Usage
**
** Formal parameters:
**
** None
**
** Implicit Parameters:
**
** None
**
** Routine Value:
**
** None
**
** Side Effects:
**
** None
**
*/
static void
Usage ()
{
fprintf (stdout, "Usage: HOSTNAME [-l log-name] [-s sym-name] [host-addr]\n");
}
#endif /* #ifdef VMS */

View File

@@ -0,0 +1,639 @@
$!
$!------------------------------------------------------------------------------
$! SSL$AUTH_CERT.COM - SSL Certificate Authority procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through creating a Server Certificate.
$!
$! There are no parameters used.
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ PID = F$GETJPI ("","PID")
$ TT_NOECHO = F$GETDVI ("TT:","TT_NOECHO")
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ GET_USER_DATA := CALL GET_USER_DATA
$ SET_USER_DATA := CALL SET_USER_DATA
$ DEL_USER_DATA := CALL DEL_USER_DATA
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$ SHOW_FILE := @SSL$COM:SSL$SHOW_FILE
$ SSL_CONF_FILE = F$TRNLMN ("SSL$CA_CONF")
$ GET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' GET
$ SET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' SET
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$CA_CONF") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ TEXT = "Create Certification Authority"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Reading Configuration ...", NORM
$ ELSE
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Initializing Configuration ...", NORM
$ ENDIF
$!
$ _request_name = "req"
$!
$ _distinguished_name = "CA_distinguished_name"
$ _distinguished_name_upd = "Y"
$!
$ _default_bits = "1024"
$ _default_bits_upd = "Y"
$!
$ _default_days = "1825"
$ _default_days_upd = "Y"
$!
$ _default_keyfile = "SSL$KEY:SERVER_CA.KEY"
$ _default_keyfile_upd = "Y"
$!
$ _default_crtfile = "SSL$CRT:SERVER_CA.CRT"
$ _default_crtfile_upd = "Y"
$!
$ _countryName_prompt = "Country Name ?"
$ _countryName_min = "2"
$ _countryName_max = "2"
$ _countryName_default = "US"
$ _countryName_upd = "Y"
$ _countryName_cnt = 4
$!
$ _0organizationName_prompt = "Organization Name ?"
$ _0organizationName_default = ""
$ _0organizationName_upd = "Y"
$ _0organizationName_cnt = 2
$!
$ _organizationalUnitName_prompt = "Organization Unit Name ?"
$ _organizationalUnitName_default = ""
$ _organizationalUnitName_upd = "Y"
$ _organizationalUnitName_cnt = 2
$!
$ _commonName_prompt = "Common Name ?"
$ _commonName_max = "64"
$ _commonName_default = "CA Authority"
$ _commonName_upd = "Y"
$ _commonName_cnt = 3
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ GET_CONF_DATA "[''_request_name']#distinguished_name"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _distinguished_name = SSL_CONF_DATA
$ _distinguished_name_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_bits"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_bits = SSL_CONF_DATA
$ _default_bits_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_days"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_days = SSL_CONF_DATA
$ _default_days_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_keyfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_keyfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[KEY]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".KEY",,"TYPE")
$ _default_keyfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_crtfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_crtfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[CRT]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".CRT",,"TYPE")
$ _default_crtfile_upd = "N"
$ ENDIF
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#countryName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_min"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_min = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _countryName_cnt .EQ. CTR THEN _countryName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _0organizationName_cnt .EQ. CTR THEN _0organizationName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _organizationalUnitName_cnt .EQ. CTR THEN _organizationalUnitName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#commonName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _commonName_cnt .EQ. CTR THEN _commonName_upd = "N"
$ ENDIF
$!
$ SET_USER_DATA "[]#pem_pass_phrase#-##PEM Pass Phrase ?#P#1###Y#Y"
$ SET_USER_DATA "[''_request_name']#default_bits#D#''_default_bits'#Encryption Bits ?#I###''_default_bits_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_days#D#''_default_days'#Default Days ?#I###''_default_days_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_keyfile#D#''_default_keyfile'#CA certificate Key File ?#F###''_default_keyfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_crtfile#D#''_default_crtfile'#CA certificate File ?#F###''_default_crtfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#distinguished_name#D#''_distinguished_name'##S###''_distinguished_name_upd'#N#N"
$ SET_USER_DATA "[''_distinguished_name']#countryName#P#''_countryName_default'#''_countryName_prompt'#S#''_countryName_min'#''_countryName_max'#''_countryName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#0.organizationName#P#''_0organizationName_default'#''_0organizationName_prompt'#S###''_0organizationName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#organizationalUnitName#P#''_organizationalUnitName_default'#''_organizationalUnitName_prompt'#S###''_organizationUnitName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#commonName#P#''_commonName_default'#''_commonName_prompt'#S##''_commonName_max'#''_commonName_upd'#Y#N"
$ SET_USER_DATA "[]#display_certificate#-#N#Display the CA certificate ?#S##1##Y#N"
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$!
$PROMPT_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ CONFIRMED = 0
$ IF REQ .EQS. "N"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF ROW .GT. MSG_ROW - 2
$ THEN
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$ ROW = TOP_ROW
$ ENDIF
$!
$CONFIRM_LOOP:
$!
$ IF PRM .EQS. ""
$ THEN
$ PROMPT = ESC + "[''ROW';''COL'H''ITM' ? [''DEF'] ''CEOL'"
$ ELSE
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' [''DEF'] ''CEOL'"
$ ENDIF
$ IF TYP .EQS. "P" THEN SET TERMINAL /NOECHO
$ ASK "''PROMPT'" ANS /END_OF_FILE=EXIT
$ IF TYP .EQS. "P" THEN SET TERMINAL /ECHO
$ ANS = F$EDIT (ANS,"TRIM")
$ IF ANS .EQS. "" THEN ANS = DEF
$ IF TYP .EQS. "F"
$ THEN
$ ANS = F$PARSE ("''ANS'","''DEF'",,,"SYNTAX_ONLY")
$ ENDIF
$ IF TYP .EQS. "I" .AND. F$TYPE (ANS) .NES. "INTEGER"
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF (TYP .EQS. "S" .OR. TYP .EQS. "P") .AND. -
((MIN .NES. "" .AND. F$LENGTH (ANS) .LT. F$INTEGER(MIN)) .OR. -
(MAX .NES. "" .AND. F$LENGTH (ANS) .GT. F$INTEGER(MAX)))
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ IF TYP .EQS. "S" THEN GOTO PROMPT_LOOP
$ IF TYP .EQS. "P" THEN GOTO CONFIRM_LOOP
$ ENDIF
$ ROW = ROW + 1
$ IF CFM .EQS. "Y"
$ THEN
$ IF CONFIRMED .EQ. 0
$ THEN
$ CONFIRMED = 1
$ CONFIRMED_ANS = ANS
$ PRM = "Confirm ''PRM'"
$ GOTO CONFIRM_LOOP
$ ELSE
$ IF ANS .NES. CONFIRMED_ANS
$ THEN
$ CALL INVALID_ENTRY
$ ROW = ROW - 2
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$ ENDIF
$ IF ANS .NES. DEF THEN SSL_USER_DATA_'CTR' = "''KEY'#''ITM'#''VAL'#''ANS'#''PRM'#''TYP'#''MIN'#''MAX'#Y#''REQ'#''CFM'"
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Save the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Saving Configuration ...", NORM
$!
$SAVE_CONF_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ IF UPD .NES. "Y" .OR. VAL .EQS. "-"
$ THEN
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$ IF VAL .EQS. "D"
$ THEN
$ SET_CONF_DATA "''KEY'#''ITM'" "''DEF'"
$ ELSE
$ SET_CONF_DATA "''KEY'#''ITM'" "''PRM'"
$ SET_CONF_DATA "''KEY'#''ITM'_default" "''DEF'"
$ ENDIF
$ IF MIN .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_min" "''MIN'"
$ IF MAX .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_max" "''MAX'"
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$!
$ PURGE /NOLOG /NOCONFIRM 'SSL_CONF_FILE'
$ RENAME 'SSL_CONF_FILE'; ;1
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Create the Certificiate Authority
$!------------------------------------------------------------------------------
$!
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Creating Certificate Authority ...", NORM
$!
$ X1 = 2
$ Y1 = TOP_ROW
$ X2 = TT_COLS - 2
$ Y2 = MSG_ROW - 1
$!
$ GET_USER_DATA "[''_request_name']#default_days"
$ _default_days = SSL_USER_DATA
$ GET_USER_DATA "[''_request_name']#default_keyfile"
$ _default_keyfile = SSL_USER_DATA
$ GET_USER_DATA "[''_request_name']#default_crtfile"
$ _default_crtfile = SSL_USER_DATA
$ GET_USER_DATA "[]#pem_pass_phrase"
$ _pem_pass_phrase = SSL_USER_DATA
$ GET_USER_DATA "[]#display_certificate"
$ _display_certificate = SSL_USER_DATA
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_REQ_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_REQ_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_REQ_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL req -config ''SSL_CONF_FILE' -new -x509 -days ''_default_days' -keyout ''_default_keyfile' -out ''_default_crtfile'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_REQ_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.RND;*
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_REQ_'PID'.LOG /OUT=SYS$LOGIN:SSL_REQ_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_REQ_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$!
$ IF F$EDIT (_display_certificate,"TRIM,UPCASE") .EQS. "Y"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Generating Output ...", NORM, CEOL
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_X509_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL x509 -noout -text -in ''_default_crtfile'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_X509_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_X509_'PID'.LOG /OUT=SYS$LOGIN:SSL_X509_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_X509_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''_default_crtfile' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$!
$ TEXT = "Press return to continue"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$ PROMPT = ESC + "[''MSG_ROW';''COL'H''TEXT'"
$ ASK "''PROMPT'" OPT
$!
$GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Set the User Data
$!------------------------------------------------------------------------------
$!
$SET_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. ""
$ THEN
$ SSL_USER_DATA_MAX == 1
$ ELSE
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX + 1
$ ENDIF
$!
$ SSL_USER_DATA_'SSL_USER_DATA_MAX' == "''P1'"
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Get the User Data
$!------------------------------------------------------------------------------
$!
$GET_USER_DATA: SUBROUTINE
$!
$ CTR = 1
$ USER_KEY = F$ELEMENT (0,"#",P1)
$ USER_ITM = F$ELEMENT (1,"#",P1)
$!
$GET_USER_DATA_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ IF USER_KEY .NES. KEY .OR. USER_ITM .NES. ITM
$ THEN
$ CTR = CTR + 1
$ GOTO GET_USER_DATA_LOOP
$ ENDIF
$ IF VAL .EQS. "-" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "D" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "P" THEN SSL_USER_DATA == "''PRM'"
$ ENDIF
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Delete the User Data
$!------------------------------------------------------------------------------
$!
$DEL_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. "" THEN GOTO DEL_USER_DATA_END
$!
$DEL_USER_DATA_LOOP:
$!
$ IF F$TYPE (SSL_USER_DATA_'SSL_USER_DATA_MAX') .NES. ""
$ THEN
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_'SSL_USER_DATA_MAX'
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX - 1
$ GOTO DEL_USER_DATA_LOOP
$ ENDIF
$!
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_MAX
$!
$DEL_USER_DATA_END:
$!
$ IF F$TYPE (SSL_USER_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_USER_DATA
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''MSG_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''MSG_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Exit the procedure
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ DEL_USER_DATA
$!
$ IF F$TYPE (SSL_CONF_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_CONF_DATA
$!
$ IF F$GETDVI ("TT:","TT_NOECHO") .AND. .NOT. TT_NOECHO THEN SET TERMINAL /ECHO
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.%%%;*
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.%%%;*
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,101 @@
$!
$!------------------------------------------------------------------------------
$! SSL$AUTO_CERT.COM - SSL Automatic Self-Signed Certificate procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$!
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Define Symbols
$!------------------------------------------------------------------------------
$!
$ OPENSSL :== $ SSL$EXE:OPENSSL
$ HOSTNAME :== $ SSL$EXE:SSL$HOSTNAME
$!
$ HOSTNAME -s HOST_NAME
$ PID = F$GETJPI ("","PID")
$ USER = F$EDIT (F$GETJPI ("","USERNAME"),"TRIM")
$ KEY_FILE = "SSL$KEY:SERVER.KEY"
$ CRT_FILE = "SSL$CRT:SERVER.CRT"
$!
$!------------------------------------------------------------------------------
$! Create a Temporary SSL Configuration
$!------------------------------------------------------------------------------
$!
$ OPEN /WRITE CFILE SYS$LOGIN:SSL_'PID'.CNF
$ WRITE CFILE "[req]"
$ WRITE CFILE "default_bits = 1024"
$ WRITE CFILE "distinguished_name = REQ_distinguished_name"
$ WRITE CFILE "[REQ_distinguished_name]"
$ WRITE CFILE "countryName = Country Name ?"
$ WRITE CFILE "countryName_default = "
$ WRITE CFILE "stateOrProvinceName = State or Province Name ?"
$ WRITE CFILE "stateOrProvinceName_default = "
$ WRITE CFILE "localityName = City Name ?"
$ WRITE CFILE "localityName_default = "
$ WRITE CFILE "0.organizationName = Organization Name ?"
$ WRITE CFILE "0.organizationName_default = "
$ WRITE CFILE "organizationalUnitName = Organization Unit Name ?
$ WRITE CFILE "organizationalUnitName_default = "
$ WRITE CFILE "commonName = Common Name ?"
$ WRITE CFILE "commonName_default = ''HOST_NAME'"
$ WRITE CFILE "emailAddress = Email Address ?"
$ WRITE CFILE "emailAddress_default = ''USER'@''HOST_NAME'"
$ CLOSE CFILE
$!
$!------------------------------------------------------------------------------
$! Create the Self-Signed Server Certificiate
$!------------------------------------------------------------------------------
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL req -nodes -new -days 30 -x509 -config SYS$LOGIN:SSL_''PID'.CNF -keyout ''KEY_FILE' -out ''CRT_FILE'"
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_'PID'.COM
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_'PID'.CNF;*
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_'PID'.RND;*
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_'PID'.LOG /OUT=SYS$LOGIN:SSL_'PID'.ERR ":error:"
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ TYPE SYS$LOGIN:SSL_'PID'.LOG
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_'PID'.LOG;*
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,231 @@
$!
$!------------------------------------------------------------------------------
$! SSL$CERT_TOOL.COM - SSL Certificate Tool procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure provides the user a menu from which they can choose desired
$! SSL Certificate processing.
$!
$! There are no parameters used.
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = f$getdvi ("TT:","TT_PAGE")
$ TT_COLS = f$getdvi ("TT:","DEVBUFSIZ")
$!
$ SET_MENU_DATA := CALL SET_MENU_DATA
$ DEL_MENU_DATA := CALL DEL_MENU_DATA
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BOLD = ESC + "[1m" ! Turn on BOLD Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$CA_CONF") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Initialize the Menu Items
$!------------------------------------------------------------------------------
$!
$ SET_MENU_DATA "View a Certificate#@SSL$COM:SSL$VIEW_CERT.COM CRT"
$ SET_MENU_DATA "View a Certificate Signing Request#@SSL$COM:SSL$VIEW_CERT.COM CSR"
$ SET_MENU_DATA "Create a Certificate Signing Request#@SSL$COM:SSL$RQST_CERT.COM"
$ SET_MENU_DATA "Create a Self-Signed Certificate#@SSL$COM:SSL$SELF_CERT.COM"
$ SET_MENU_DATA "Create a CA (Certification Authority) Certificate#@SSL$COM:SSL$AUTH_CERT.COM"
$ SET_MENU_DATA "Sign a Certificate Signing Request#@SSL$COM:SSL$SIGN_CERT.COM"
$ SET_MENU_DATA "Hash Certificates#@SSL$COM:SSL$HASH_CERT.COM CRT"
$ SET_MENU_DATA "Hash Certificate Revocations#@SSL$COM:SSL$HASH_CERT.COM CRL"
$ SET_MENU_DATA "Exit#GOTO EXIT"
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$PAGE_LOOP:
$!
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ TEXT = "Main Menu"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ CTR = 1
$ ROW = 6
$ COL = (TT_COLS - (SSL_MENU_ITEM_MAX + 4)) / 2
$ TOP_ROW = ROW
$ SEP_ROWS = 2
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Process the menu options
$!------------------------------------------------------------------------------
$!
$MENU_LOOP:
$!
$ IF CTR .LE. SSL_MENU_DATA_MAX
$ THEN
$ OPT = F$ELEMENT (0,"#",SSL_MENU_DATA_'CTR') ! Option String
$ CMD = F$ELEMENT (1,"#",SSL_MENU_DATA_'CTR') ! Command String
$ IF ROW .GE. (MSG_ROW - (SEP_ROWS + 2)) .AND. SEP_ROWS .GT. 1
$ THEN
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$ ROW = TOP_ROW
$ SEP_ROWS = 1
$ CTR = 1
$ ELSE
$ NUM = F$FAO ("!2SL", CTR)
$ SAY ESC + "[''ROW';''COL'H", BOLD, "''NUM'. ", NORM, "''OPT'"
$ ROW = ROW + SEP_ROWS
$ CTR = CTR + 1
$ ENDIF
$ GOTO MENU_LOOP
$ ENDIF
$!
$ ROW = ROW + 1
$!
$!------------------------------------------------------------------------------
$! Prompt the user for input
$!------------------------------------------------------------------------------
$!
$PROMPT_LOOP:
$!
$ PROMPT = ESC + "[''ROW';''COL'HEnter Option: ''CEOL'"
$ ASK "''PROMPT'" OPT /END_OF_FILE=EXIT
$ OPT = F$EDIT (OPT, "TRIM")
$ IF OPT .EQS. "" THEN GOTO PROMPT_LOOP
$!
$ IF F$TYPE (OPT) .NES. "INTEGER" .OR. -
F$INTEGER (OPT) .LE. 0 .OR. -
F$INTEGER (OPT) .GT. SSL_MENU_DATA_MAX
$ THEN
$ CALL INVALID_OPTION
$ GOTO PROMPT_LOOP
$ ENDIF
$!
$ CMD = F$ELEMENT (1,"#",SSL_MENU_DATA_'OPT')
$!
$ 'CMD'
$!
$ GOTO PAGE_LOOP
$!
$!------------------------------------------------------------------------------
$! Set the Menu Data
$!------------------------------------------------------------------------------
$!
$SET_MENU_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_MENU_DATA_MAX) .EQS. ""
$ THEN
$ SSL_MENU_DATA_MAX == 1
$ SSL_MENU_ITEM_MAX == 0
$ ELSE
$ SSL_MENU_DATA_MAX == SSL_MENU_DATA_MAX + 1
$ ENDIF
$!
$ SSL_MENU_DATA_'SSL_MENU_DATA_MAX' == "''P1'"
$!
$ MENU_ITEM = F$ELEMENT (0,"#",SSL_MENU_DATA_'SSL_MENU_DATA_MAX')
$ IF F$LENGTH (MENU_ITEM) .GT. SSL_MENU_ITEM_MAX THEN SSL_MENU_ITEM_MAX == F$LENGTH (MENU_ITEM)
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Delete the Menu Data
$!------------------------------------------------------------------------------
$!
$DEL_MENU_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_MENU_DATA_MAX) .EQS. "" THEN GOTO DEL_MENU_DATA_END
$!
$DEL_MENU_DATA_LOOP:
$!
$ IF F$TYPE (SSL_MENU_DATA_'SSL_MENU_DATA_MAX') .NES. ""
$ THEN
$ DELETE /SYMBOL /GLOBAL SSL_MENU_DATA_'SSL_MENU_DATA_MAX'
$ SSL_MENU_DATA_MAX == SSL_MENU_DATA_MAX - 1
$ GOTO DEL_MENU_DATA_LOOP
$ ENDIF
$!
$ DELETE /SYMBOL /GLOBAL SSL_MENU_DATA_MAX
$!
$DEL_MENU_DATA_END:
$!
$ IF F$TYPE (SSL_MENU_ITEM_MAX) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_MENU_ITEM_MAX
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_OPTION: SUBROUTINE
$!
$ SAY ESC + "[''MSG_ROW';01H", BELL, " Invalid Option, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''MSG_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEL_MENU_DATA
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,220 @@
$!
$!------------------------------------------------------------------------------
$! SSL$CONF_UTIL.COM - SSL Configuration Utility procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure gets or sets a given key item in a SSL configuration file.
$! The parameters used are:
$!
$! P1 - SSL Configuration File
$! P2 - SSL Configuration Function (i.e. GET/SET)
$! P3 - SSL Configuration Key/Item (delimited by '#')
$! P4 - SSL Configuration Key/Item Value (for SET function only)
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ SSL_CONF_DATA == ""
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$!------------------------------------------------------------------------------
$! Process parameters
$!------------------------------------------------------------------------------
$!
$ KEY_FOUND = 0
$ ITM_FOUND = 0
$ P1 = F$EDIT (P1,"TRIM")
$ P2 = F$EDIT (P2,"TRIM,UPCASE")
$ KEY = F$ELEMENT (0,"#",P3)
$ ITM = F$ELEMENT (1,"#",P3)
$!
$!------------------------------------------------------------------------------
$! Process the configuration function
$!------------------------------------------------------------------------------
$!
$ IF P2 .EQS. "GET" THEN GOSUB GET_CONF_DATA
$ IF P2 .EQS. "SET" THEN GOSUB SET_CONF_DATA
$!
$ GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Get the configuration data
$!------------------------------------------------------------------------------
$!
$GET_CONF_DATA:
$!
$ OPEN /READ /ERROR=OPEN_ERROR IFILE 'P1'
$!
$GET_CONF_DATA_LOOP:
$!
$ READ /ERROR=READ_ERROR /END_OF_FILE=GET_CONF_DATA_END IFILE IREC
$!
$ SREC = IREC
$ IPOS = F$LOCATE ("#",IREC)
$ IF IPOS .NE. F$LENGTH (IREC) THEN IREC = F$EXTRACT (0,IPOS,IREC)
$ IREC = F$EDIT (IREC,"COLLAPSE")
$ IF IREC .EQS. "" THEN GOTO GET_CONF_DATA_LOOP
$!
$ IF IREC .EQS. KEY
$ THEN
$ KEY_FOUND = 1
$ GOTO GET_CONF_DATA_LOOP
$ ENDIF
$!
$ IF KEY_FOUND .EQ. 1
$ THEN
$ IF F$EXTRACT (0,1,IREC) .EQS. "[" .AND. F$EXTRACT (F$LENGTH (IREC)-1,1,IREC) .EQS. "]"
$ THEN
$ SSL_CONF_DATA == ""
$ GOTO GET_CONF_DATA_END
$ ENDIF
$!
$ IF ITM .EQS. F$EDIT (F$ELEMENT (0,"=",IREC),"TRIM")
$ THEN
$ VAL = F$EDIT (F$ELEMENT (1,"=",SREC),"TRIM")
$ SSL_CONF_DATA == "''VAL'"
$ GOTO GET_CONF_DATA_END
$ ENDIF
$ ENDIF
$!
$ GOTO GET_CONF_DATA_LOOP
$!
$GET_CONF_DATA_END:
$!
$ CLOSE /ERROR=CLOSE_ERROR IFILE
$!
$ RETURN
$!
$!------------------------------------------------------------------------------
$! Set the configuration data
$!------------------------------------------------------------------------------
$!
$SET_CONF_DATA:
$!
$ IF F$SEARCH ("''P1'") .EQS. "" THEN CREATE /NOLOG 'P1'
$!
$ OPEN /READ /ERROR=OPEN_ERROR IFILE 'P1'
$ OPEN /WRITE /ERROR=OPEN_ERROR OFILE 'P1'
$!
$SET_CONF_DATA_LOOP:
$!
$ READ /ERROR=READ_ERROR /END_OF_FILE=SET_CONF_DATA_END IFILE IREC
$!
$ IF ITM_FOUND .EQ. 1
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE IREC
$ GOTO SET_CONF_DATA_LOOP
$ ENDIF
$!
$ SREC = IREC
$ IPOS = F$LOCATE ("#",IREC)
$ IF IPOS .NE. F$LENGTH (IREC) THEN IREC = F$EXTRACT (0,IPOS,IREC)
$ IREC = F$EDIT (IREC,"COLLAPSE")
$!
$ IF IREC .EQS. ""
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE SREC
$ GOTO SET_CONF_DATA_LOOP
$ ENDIF
$!
$ IF IREC .EQS. KEY
$ THEN
$ KEY_FOUND = 1
$ WRITE /ERROR=WRITE_ERROR OFILE SREC
$ GOTO SET_CONF_DATA_LOOP
$ ENDIF
$!
$ IF KEY_FOUND .EQ. 1
$ THEN
$ IF F$EXTRACT (0,1,IREC) .EQS. "[" .AND. F$EXTRACT (F$LENGTH (IREC)-1,1,IREC) .EQS. "]"
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE "''ITM' = ''P4'"
$ WRITE /ERROR=WRITE_ERROR OFILE SREC
$ ITM_FOUND = 1
$ GOTO SET_CONF_DATA_LOOP
$ ENDIF
$!
$ IF ITM .EQS. F$EDIT (F$ELEMENT (0,"=",IREC),"TRIM")
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE "''ITM' = ''P4'"
$ ITM_FOUND = 1
$ GOTO SET_CONF_DATA_LOOP
$ ENDIF
$ ENDIF
$!
$ WRITE /ERROR=WRITE_ERROR OFILE SREC
$!
$ GOTO SET_CONF_DATA_LOOP
$!
$SET_CONF_DATA_END:
$!
$ IF KEY_FOUND .EQ. 0
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE "''KEY'"
$ WRITE /ERROR=WRITE_ERROR OFILE "''ITM' = ''P4'"
$ ENDIF
$!
$ IF KEY_FOUND .EQ. 1 .AND. ITM_FOUND .EQ. 0
$ THEN
$ WRITE /ERROR=WRITE_ERROR OFILE "''ITM' = ''P4'"
$ ENDIF
$!
$ CLOSE IFILE
$ CLOSE OFILE
$!
$ RETURN
$!
$!------------------------------------------------------------------------------
$! File Errors
$!------------------------------------------------------------------------------
$!
$OPEN_ERROR:
$!
$ SAY "Open error for file ''P1' ... aborting ''P2'"
$ GOTO EXIT
$!
$READ_ERROR:
$!
$ SAY "Read error for file ''P1' ... aborting ''P2'"
$ GOTO EXIT
$!
$WRITE_ERROR:
$!
$ SAY "Write error for file ''P1' ... aborting ''P2'"
$ GOTO EXIT
$!
$CLOSE_ERROR:
$!
$ SAY "Close error for file ''P1' ... aborting ''P2'"
$ GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE IFILE
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT 1

View File

@@ -0,0 +1,109 @@
$!
$!------------------------------------------------------------------------------
$! SSL$DRAW_BOX.COM - SSL Draw Box procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure draws a box with the specified coordinates.
$!
$! The parameters used are:
$!
$! P1 - X1 coordinate
$! P2 - Y1 coordinate
$! P3 - X2 coordinate
$! P4 - Y3 coordinate
$! P5 - Box Header (Optional)
$! P6 - Box Footer (Optional)
$! P7 - Fill Box (Optional)
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ SAY := WRITE SYS$OUTPUT
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ FILL_BOX := @SSL$COM:SSL$FILL_BOX
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ GRPH_ON[0,8] = 14 ! Turn GRAPHICS mode On
$ GRPH_OFF[0,8] = 15 ! Turn GRAPHICS mode Off
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BOLD = ESC + "[1m" ! Turn on BOLD Attribute
$!
$!------------------------------------------------------------------------------
$! Draw the box
$!------------------------------------------------------------------------------
$!
$ X1 = F$INTEGER (P1)
$ Y1 = F$INTEGER (P2)
$ X2 = F$INTEGER (P3)
$ Y2 = F$INTEGER (P4)
$!
$ ROW = Y1 + 1
$ COL = X1 + 1
$ SIDE1 = X1
$ SIDE2 = X2 + 1
$ TOP = "l" + F$FAO("!#*q", x2 - x1) + "k"
$ BOT = "m" + F$FAO("!#*q", x2 - x1) + "j"
$!
$ SAY ESC + "[''Y1';''X1'H", BOLD, GRPH_ON, TOP, GRPH_OFF, NORM
$!
$SIDES:
$!
$ SAY ESC + "[''ROW';''SIDE1'H",BOLD,GRPH_ON,"x",GRPH_OFF,NORM
$ SAY ESC + "[''ROW';''SIDE2'H",BOLD,GRPH_ON,"x",GRPH_OFF,NORM
$!
$ IF ROW .LT. Y2
$ THEN
$ ROW = ROW + 1
$ GOTO SIDES
$ ENDIF
$!
$ SAY ESC + "[''Y2';''X1'H", BOLD, GRPH_ON, BOT, GRPH_OFF, NORM
$!
$ IF P5 .NES. ""
$ THEN
$ IF F$LENGTH(P5) .GT. X2 - X1
$ THEN
$ HEADER = F$EXTRACT (0, (X2 - X1 - 4), P5)
$ ELSE
$ HEADER = P5
$ ENDIF
$ COL = X1 + ((X2 - X1 - F$LENGTH(HEADER)) / 2)
$ SAY ESC + "[''Y1';''COL'H''BOLD'''HEADER'''NORM'"
$ ENDIF
$!
$ IF P6 .NES. ""
$ THEN
$ IF F$LENGTH(P6) .GT. X2 - X1
$ THEN
$ FOOTER = F$EXTRACT (0, (X2 - X1 - 4), P6)
$ ELSE
$ FOOTER = P6
$ ENDIF
$ COL = X1 + ((X2 - X1 - F$LENGTH(FOOTER)) / 2)
$ SAY ESC + "[''Y2';''COL'H''BOLD'''FOOTER'''NORM'"
$ ENDIF
$!
$ IF P7 .EQS. "" .OR. P7 .EQS. "Y" THEN FILL_BOX 'X1' 'Y1' 'X2' 'Y2'
$!
$ GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1 @@
EXIT

View File

@@ -0,0 +1,65 @@
$!
$!------------------------------------------------------------------------------
$! SSL$FILL_BOX.COM - SSL Fill Box procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure draws a box with the specified coordinates.
$!
$! The parameters used are:
$!
$! P1 - X1 coordinate
$! P2 - Y1 coordinate
$! P3 - X2 coordinate
$! P4 - Y2 coordinate
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ SAY := WRITE SYS$OUTPUT
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$!
$!------------------------------------------------------------------------------
$! Draw the box
$!------------------------------------------------------------------------------
$!
$ X1 = F$INTEGER (P1)
$ Y1 = F$INTEGER (P2)
$ X2 = F$INTEGER (P3)
$ Y2 = F$INTEGER (P4)
$!
$ ROW = Y1 + 1
$ COL = X1 + 1
$ FILL = F$FAO("!#* ", X2 - X1)
$!
$FILL_LOOP:
$!
$ IF ROW .LT. Y2
$ THEN
$ SAY ESC + "[''ROW';''COL'H",FILL
$ ROW = ROW + 1
$ GOTO FILL_LOOP
$ ENDIF
$!
$ GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,235 @@
$!
$!------------------------------------------------------------------------------
$! SSL$HASH_CERT.COM - SSL Hash Certificate procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through hashing Certificates.
$!
$! The parameters used are:
$!
$! P1 - Certificate or Certificate Revocation List (i.e. "CRT" or "CRL")
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$ROOT") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ TEXT = "Hash Certification Authorities"
$ ELSE
$ TEXT = "Hash Certificate Revocations"
$ ENDIF
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ CTR = 1
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ PRM = "Certificate Path:"
$ DEF = "SSL$CRT:*.CRT"
$ ENDIF
$!
$ IF P1 .EQS. "CRL"
$ THEN
$ PRM = "Certificate Revocation Path:"
$ DEF = "SSL$CRT:*.CRL"
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$PROMPT_LOOP:
$!
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' ? [''DEF'] ''CEOL'"
$ ASK "''PROMPT'" _hash_path_name
$ _hash_path_name = F$EDIT (_hash_path_name,"TRIM")
$ IF _hash_path_name .EQS. "" THEN _hash_path_name = DEF
$!
$ HASH_DEV = F$PARSE (_hash_path_name,DEF,,"DEVICE")
$ HASH_DIR = F$PARSE (_hash_path_name,DEF,,"DIRECTORY")
$ HASH_NAM = F$PARSE (_hash_path_name,DEF,,"NAME")
$ HASH_TYP = F$PARSE (_hash_path_name,DEF,,"TYPE")
$ _hash_path_name = HASH_DEV + HASH_DIR + HASH_NAM + HASH_TYP
$!
$!------------------------------------------------------------------------------
$! Create the Certificiate Hashes
$!------------------------------------------------------------------------------
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Hashing Certificate Authorities ...", NORM, CEOL
$ ENDIF
$!
$ IF P1 .EQS. "CRL"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Hashing Certificate Revocations ...", NORM, CEOL
$ ENDIF
$!
$ IF F$SEARCH ("''HASH_DEV'''HASH_DIR'DELETE_HASH_FILES.COM") .NES. ""
$ THEN
$ @'HASH_DEV''HASH_DIR'DELETE_HASH_FILES.COM
$ DELETE 'HASH_DEV''HASH_DIR'DELETE_HASH_FILES.COM;*
$ ENDIF
$!
$ CTR = 0
$!
$ OPEN /WRITE OFILE 'HASH_DEV''HASH_DIR'DELETE_HASH_FILES.COM
$!
$CERT_LOOP:
$!
$ CERT_FILE = F$SEARCH ("''_hash_path_name'", 1)
$ IF CERT_FILE .EQS. "" THEN GOTO CERT_END
$ CTR = CTR + 1
$!
$ CALL HASH_CERT 'P1' 'CERT_FILE'
$!
$ GOTO CERT_LOOP
$!
$CERT_END:
$!
$ CLOSE OFILE
$!
$ IF CTR .EQ. 0
$ THEN
$ TEXT = "No files found, Press return to continue"
$ ELSE
$ TEXT = "Press return to continue"
$ ENDIF
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ IF CTR .EQ. 0
$ THEN
$ SAY BELL, ESC + "[''MSG_ROW';01H", CEOS
$ ELSE
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$ ENDIF
$ PROMPT = ESC + "[''MSG_ROW';''COL'H''TEXT'"
$ ASK "''PROMPT'" OPT
$!
$ GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Hash Certificate Subroutine
$!------------------------------------------------------------------------------
$!
$HASH_CERT: SUBROUTINE
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ HASH_SUFF = ""
$ HASH_FUNC = "$SSL$EXE:OPENSSL X509 -HASH -NOOUT -IN"
$ ELSE
$ HASH_SUFF = "R"
$ HASH_FUNC = "$SSL$EXE:OPENSSL CRL -HASH -NOOUT -IN"
$ ENDIF
$!
$ PIPE HASH_FUNC 'P2' | (READ SYS$INPUT VAL ; DEFINE/NOLOG/JOB HASH_VAL &VAL)
$ HASH_VAL = F$TRNLNM ("HASH_VAL")
$ DEASSIGN /JOB HASH_VAL
$!
$ IDX = 0
$!
$IDX_LOOP:
$!
$ HASH_FILE = "''HASH_DEV'''HASH_DIR'''HASH_VAL'.''HASH_SUFF'''IDX'"
$ IF F$SEARCH ("''HASH_FILE'") .NES. ""
$ THEN
$ IDX = IDX + 1
$ GOTO IDX_LOOP
$ ENDIF
$!
$ COPY 'P2' 'HASH_FILE'
$ WRITE OFILE "$ DELETE ''HASH_FILE';*"
$!
$ EXIT
$!
$ ENDSUBOUTINE
$!
$!------------------------------------------------------------------------------
$! Exit the procedure
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,61 @@
$!
$!------------------------------------------------------------------------------
$! SSL$INIT_ENV.COM - SSL Initialize Environment
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure sets up the SSL environment logicals & symbols.
$!
$! P1 = Mode of the logicals (ie - "/SYSTEM/EXECUTIVE_MODE").
$! Note - if P1 is not passed in, P1 will default to PROCESS.
$!
$!------------------------------------------------------------------------------
$! Initialization
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM("SSL$ROOT") .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT " "
$ WRITE SYS$OUTPUT " SSL-E-ERROR, SSL has not been started."
$ WRITE SYS$OUTPUT " "
$ WRITE SYS$OUTPUT " Execute the command procedure, SYS$STARTUP:SSL$STARTUP.COM, and then try this procedure again."
$ WRITE SYS$OUTPUT " "
$ EXIT
$ ENDIF
$!
$ IF P1 .EQS. ""
$ THEN
$ P1 = "/PROCESS"
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Define logicals
$!------------------------------------------------------------------------------
$!
$ DEFINE 'P1 SSL$CA_CONF SSL$ROOT:[CONF]SSL$CA.CNF
$ DEFINE 'P1 SSL$CONF SSL$ROOT:[CONF]SSL$CERT.CNF
$ DEFINE 'P1 SSL$COM SSL$ROOT:[COM]
$ DEFINE 'P1 SSL$CRT SSL$ROOT:[CERTS]
$ DEFINE 'P1 SSL$CSR SSL$ROOT:[CERTS]
$ DEFINE 'P1 SSL$KEY SSL$ROOT:[CERTS]
$ DEFINE 'P1 SSL$DB SSL$ROOT:[PRIVATE]
$!
$!------------------------------------------------------------------------------
$! Define foreign symbols
$!------------------------------------------------------------------------------
$!
$ OPENSSL :== $ SSL$EXE:OPENSSL
$ HOSTADDR :== $ SSL$EXE:SSL$HOSTADDR
$ HOSTNAME :== $ SSL$EXE:SSL$HOSTNAME
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$ EXIT

View File

@@ -0,0 +1,55 @@
$!
$!------------------------------------------------------------------------------
$! SSL$INIT_TERM.COM - SSL Initialize Terminal procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure initializes the terminal attributes.
$!
$! The parameters used are:
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ EDIT := EDIT
$!
$!------------------------------------------------------------------------------
$! Initialize the terminal with TPU
$!------------------------------------------------------------------------------
$!
$ IF F$SEARCH ("SSL$COM:SSL$EXIT_CMD.TPU") .EQS. ""
$ THEN
$ OPEN /WRITE OFILE SSL$COM:SSL$EXIT_CMD.TPU
$ WRITE OFILE "EXIT"
$ CLOSE OFILE
$ ENDIF
$!
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$INPUT SYS$COMMAND
$ EDIT /TPU /COMMAND=OPENSS$COM:SSL$EXIT_CMD.TPU
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,230 @@
$!
$!------------------------------------------------------------------------------
$! SSL$PICK_FILE.COM - SSL Pick File procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure display the contents of a given file in a box size specified.
$!
$! The parameters used are:
$!
$! P1 - File Spec to Parse
$! P2 - X1 coordinate
$! P3 - Y1 coordinate
$! P4 - X2 coordinate
$! P5 - Y3 coordinate
$! P6 - File Pick Header (Optional)
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ SSL_FILE_NAME == ""
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ DRAW_BOX := @SSL$COM:SSL$DRAW_BOX
$ FILL_BOX := @SSL$COM:SSL$FILL_BOX
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BOLD = ESC + "[1m" ! Turn on BOLD Attribute
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ P1 = F$EDIT (P1, "TRIM")
$ P2 = F$INTEGER (P2)
$ P3 = F$INTEGER (P3)
$ P4 = F$INTEGER (P4)
$ P5 = F$INTEGER (P5)
$ FILE_MAX = 0
$!
$SEARCH_LOOP:
$!
$ FILE = F$SEARCH ("''P1'",1)
$ IF FILE .NES. ""
$ THEN
$ IF FILE_MAX .EQ. 1
$ THEN
$ IF FILE_1 .EQS. FILE THEN GOTO SEARCH_END
$ ENDIF
$ FILE_MAX = FILE_MAX + 1
$ FILE_'FILE_MAX' = FILE
$ GOTO SEARCH_LOOP
$ ENDIF
$!
$SEARCH_END:
$!
$ IF FILE_MAX .EQ. 0
$ THEN
$ DRAW_BOX 'P2' 'P3' 'P4' 'P5' "''P6'" " No Files Found, Press Return to Exit "
$ INPUT_ROW = P5 + 1
$ PROMPT = ESC + "[''INPUT_ROW';01H ''CEOL'"
$ ASK "''PROMPT'" OPT
$ GOTO EXIT
$ ENDIF
$!
$ COL = P2 + 2
$ ROW = P3 + 2
$ TOP_ROW = ROW
$ INPUT_ROW = P5 + 1
$ BOX_WIDTH = P4 - (P2 + 2)
$ BOX_HEIGHT = P5 - (P3 + 3)
$!
$ FILE_CTR = 1
$ PAGE_CTR = 1
$ PAGE_'PAGE_CTR'_FILE_CTR = FILE_CTR
$ FILES_PER_PAGE = BOX_HEIGHT
$ PAGE_MAX = FILE_MAX / FILES_PER_PAGE
$ IF PAGE_MAX * FILES_PER_PAGE .LT. FILE_MAX THEN PAGE_MAX = PAGE_MAX + 1
$!
$ DRAW_BOX 'P2' 'P3' 'P4' 'P5' "''P6'" " Enter B for Back, N for Next, Ctrl-Z to Exit or Enter a File Number "
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$!
$DISPLAY_LOOP:
$!
$ IF FILE_CTR .LE. FILE_MAX .AND. F$TYPE (FILE_'FILE_CTR') .NES. ""
$ THEN
$ FILE = FILE_'FILE_CTR'
$ ELSE
$ FILE = ""
$ ENDIF
$ WRAP_IN_PROGRESS = 0
$!
$WRAP_LOOP:
$!
$ IF ROW .LE. (P5 - 2) .AND. -
FILE_CTR .LE. PAGE_CTR * FILES_PER_PAGE
$ THEN
$ IF F$LENGTH (FILE) .GT. BOX_WIDTH
$ THEN
$ IF WRAP_IN_PROGRESS .EQ. 0
$ THEN
$ CTR_TXT = F$FAO ("!3UL. ",FILE_CTR)
$ WRAP_IN_PROGRESS = 1
$ ELSE
$ CTR_TXT = " "
$ ENDIF
$ FILE_SEG = F$EXTRACT (0, BOX_WIDTH - F$LENGTH (CTR_TXT), FILE)
$ SAY ESC + "[''ROW';''COL'H''BOLD'''CTR_TXT'''NORM'''FILE_SEG'"
$ FILE = F$EXTRACT (BOX_WIDTH - F$LENGTH (CTR_TXT), F$LENGTH (FILE) - (BOX_WIDTH + F$LENGTH (CTR_TXT)), FILE)
$ ROW = ROW + 1
$ GOTO WRAP_LOOP
$ ELSE
$ IF FILE .NES. ""
$ THEN
$ IF WRAP_IN_PROGRESS .EQ. 0
$ THEN
$ CTR_TXT = F$FAO ("!3UL. ",FILE_CTR)
$ ELSE
$ CTR_TXT = " "
$ ENDIF
$ SAY ESC + "[''ROW';''COL'H''BOLD'''CTR_TXT'''NORM'''FILE'"
$ ENDIF
$ ENDIF
$ ELSE
$!
$RETRY:
$!
$ PROMPT = ESC + "[''INPUT_ROW';01H ''CEOL'"
$ ASK "''PROMPT'" OPT
$ IF F$TYPE (OPT) .NES. "INTEGER" .AND. -
F$EDIT (OPT,"TRIM,UPCASE") .NES. "B" .AND. -
F$EDIT (OPT,"TRIM,UPCASE") .NES. "N"
$ THEN
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ IF F$TYPE (OPT) .EQS. "INTEGER"
$ THEN
$ IF OPT .GT. 0 .AND. -
OPT .LE. FILE_MAX .AND. -
OPT .LE. (FILE_CTR - 1) .AND. -
OPT .GE. (FILE_CTR - 1 - FILES_PER_PAGE)
$ THEN
$ SSL_FILE_NAME == FILE_'OPT'
$ GOTO EXIT
$ ELSE
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ ENDIF
$ IF F$EDIT (OPT,"TRIM,UPCASE") .EQS. "B"
$ THEN
$ IF PAGE_CTR .GT. 1
$ THEN
$ ROW = TOP_ROW
$ PAGE_CTR = PAGE_CTR - 1
$ FILE_CTR = PAGE_'PAGE_CTR'_FILE_CTR
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ GOTO DISPLAY_LOOP
$ ELSE
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ ENDIF
$ IF F$EDIT (OPT,"TRIM,UPCASE") .EQS. "N"
$ THEN
$ IF PAGE_CTR .LT. PAGE_MAX
$ THEN
$ PAGE_CTR = PAGE_CTR + 1
$ PAGE_'PAGE_CTR'_FILE_CTR = FILE_CTR
$ FILE_CTR = PAGE_'PAGE_CTR'_FILE_CTR
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ ELSE
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ ENDIF
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ ROW = TOP_ROW
$ GOTO WRAP_LOOP
$ ENDIF
$ FILE_CTR = FILE_CTR + 1
$ ROW = ROW + 1
$ GOTO DISPLAY_LOOP
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''INPUT_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''INPUT_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,62 @@
$!
$!------------------------------------------------------------------------------
$! SSL$REM_ENV.COM - Remove the SSL Initialize Environment
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure deletes the SSL environment logicals & symbols set up by
$! SSL$INIT_ENV.COM.
$!
$! P1 = Mode of the logicals (ie - "/SYSTEM/EXECUTIVE_MODE").
$! Note - if P1 is not passed in, P1 will default to PROCESS.
$!
$!------------------------------------------------------------------------------
$! Initialization
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM("SSL$ROOT") .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT " "
$ WRITE SYS$OUTPUT " SSL-E-ERROR, SSL has not been started."
$ WRITE SYS$OUTPUT " "
$ WRITE SYS$OUTPUT " Execute the command procedure, SYS$STARTUP:SSL$STARTUP.COM, and then try this procedure again."
$ WRITE SYS$OUTPUT " "
$ EXIT
$ ENDIF
$!
$ IF P1 .EQS. ""
$ THEN
$ P1 = "/PROCESS"
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Define logicals
$!------------------------------------------------------------------------------
$!
$ DEASSIGN 'P1 SSL$CA_CONF
$ DEASSIGN 'P1 SSL$CONF
$ DEASSIGN 'P1 SSL$COM
$ DEASSIGN 'P1 SSL$CRT
$ DEASSIGN 'P1 SSL$CSR
$ DEASSIGN 'P1 SSL$KEY
$ DEASSIGN 'P1 SSL$DB
$!
$!------------------------------------------------------------------------------
$! Define foreign symbols
$!------------------------------------------------------------------------------
$!
$ DELETE/SYMBOL/GLOBAL OPENSSL
$ DELETE/SYMBOL/GLOBAL HOSTADDR
$ DELETE/SYMBOL/GLOBAL HOSTNAME
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$ EXIT

View File

@@ -0,0 +1,769 @@
$!
$!------------------------------------------------------------------------------
$! SSL$RQST_CERT.COM - SSL Certificate Request procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through creating a Certificate Request.
$!
$! There are no parameters used.
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ PID = F$GETJPI ("","PID")
$ TT_NOECHO = F$GETDVI ("TT:","TT_NOECHO")
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ GET_USER_DATA := CALL GET_USER_DATA
$ SET_USER_DATA := CALL SET_USER_DATA
$ DEL_USER_DATA := CALL DEL_USER_DATA
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$ SHOW_FILE := @SSL$COM:SSL$SHOW_FILE
$ SSL_CONF_FILE = F$TRNLNM ("SSL$CONF")
$ GET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' GET
$ SET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' SET
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$ROOT") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ TEXT = "Create Certificate Request"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Reading Configuration ...", NORM
$ ELSE
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Initializing Configuration ...", NORM
$ ENDIF
$!
$ _request_name = "req"
$!
$ _distinguished_name = "REQ_distinguished_name"
$ _distinguished_name_upd = "Y"
$!
$ _default_bits = "1024"
$ _default_bits_upd = "Y"
$!
$ _default_keyfile = "SSL$KEY:SERVER.KEY"
$ _default_keyfile_upd = "Y"
$!
$ _default_csrfile = "SSL$CSR:SERVER.CSR"
$ _default_csrfile_upd = "Y"
$!
$ _countryName_prompt = "Country Name ?"
$ _countryName_min = "2"
$ _countryName_max = "2"
$ _countryName_default = "US"
$ _countryName_upd = "Y"
$ _countryName_cnt = 4
$!
$ _stateOrProvinceName_prompt = "State or Province Name ?"
$ _stateOrProvinceName_default = ""
$ _stateOrProvinceName_upd = "Y"
$ _stateOrProvinceName_cnt = 2
$!
$ _localityName_prompt = "City Name ?"
$ _localityName_default = ""
$ _localityName_upd = "Y"
$ _localityName_cnt = 2
$!
$ _0organizationName_prompt = "Organization Name ?"
$ _0organizationName_default = ""
$ _0organizationName_upd = "Y"
$ _0organizationName_cnt = 2
$!
$ _organizationalUnitName_prompt = "Organization Unit Name ?"
$ _organizationalUnitName_default = ""
$ _organizationalUnitName_upd = "Y"
$ _organizationalUnitName_cnt = 2
$!
$ _commonName_prompt = "Common Name ?"
$ _commonName_max = "64"
$ HOSTNAME -s _commonName_default
$ _commonName_upd = "Y"
$ _commonName_cnt = 3
$!
$ _emailAddress_prompt = "Email Address ?"
$ _emailAddress_max = "40"
$ _emailAddress_default = "webmaster@''_commonName_default'"
$ _emailAddress_upd = "Y"
$ _emailAddress_cnt = 3
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ GET_CONF_DATA "[''_request_name']#distinguished_name"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _distinguished_name = SSL_CONF_DATA
$ _distinguished_name_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_bits"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_bits = SSL_CONF_DATA
$ _default_bits_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_keyfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_keyfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[KEY]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".KEY",,"TYPE")
$ _default_keyfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_csrfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_csrfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[CSR]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".CSR",,"TYPE")
$ _default_csrfile_upd = "N"
$ ENDIF
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#countryName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_min"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_min = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _countryName_cnt .EQ. CTR THEN _countryName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#stateOrProvinceName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _stateOrProvinceName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#stateOrProvinceName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _stateOrProvinceName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _stateOrProvinceName_cnt .EQ. CTR THEN _stateOrProvinceName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#localityName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _localityName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#localityName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _localityName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _localityName_cnt .EQ. CTR THEN _localityName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _0organizationName_cnt .EQ. CTR THEN _0organizationName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _organizationalUnitName_cnt .EQ. CTR THEN _organizationalUnitName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#commonName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _commonName_cnt .EQ. CTR THEN _commonName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _emailAddress_cnt .EQ. CTR THEN _emailAddress_upd = "N"
$ ENDIF
$!
$ SET_USER_DATA "[]#encrypt_key#-#N#Encrypt Private Key ?#S##1##Y#N"
$ SET_USER_DATA "[]#pem_pass_phrase#-##PEM Pass Phrase ?#P#1###Y#Y"
$ SET_USER_DATA "[''_request_name']#default_bits#D#''_default_bits'#Encryption Bits ?#I###''_default_bits_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_keyfile#D#''_default_keyfile'#Certificate Key File ?#F###''_default_keyfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_csrfile#D#''_default_csrfile'#Certificate Request File ?#F###''_default_csrfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#distinguished_name#D#''_distinguished_name'##S###''_distinguished_name_upd'#N#N"
$ SET_USER_DATA "[''_distinguished_name']#countryName#P#''_countryName_default'#''_countryName_prompt'#S#''_countryName_min'#''_countryName_max'#''_countryName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#stateOrProvinceName#P#''_stateOrProvinceName_default'#''_stateOrProvinceName_prompt'#S###''_stateOrProvinceName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#localityName#P#''_localityName_default'#''_localityName_prompt'#S###''_localityName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#0.organizationName#P#''_0organizationName_default'#''_0organizationName_prompt'#S###''_0organizationName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#organizationalUnitName#P#''_organizationalUnitName_default'#''_organizationalUnitName_prompt'#S###''_organizationUnitName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#commonName#P#''_commonName_default'#''_commonName_prompt'#S##''_commonName_max'#''_commonName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#emailAddress#P#''_emailAddress_default'#''_emailAddress_prompt'#S##''_emailAddress_max'#''_emailAddress_upd'#Y#N"
$ SET_USER_DATA "[]#display_certificate#-#N#Display the Certificate ?#S##1##Y#N"
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$!
$PROMPT_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$!
$! The PEM Pass Phrase prompt is dependant on the answer to encrypt the private key
$!
$ IF KEY .EQS. "[]" .AND. ITM .EQS. "pem_pass_phrase"
$ THEN
$ GET_USER_DATA "[]#encrypt_key"
$ _encrypt_key = SSL_USER_DATA
$ IF F$EDIT (_encrypt_key,"UPCASE") .NES. "Y"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$!
$ CONFIRMED = 0
$ IF REQ .EQS. "N"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF ROW .GT. MSG_ROW - 2
$ THEN
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$ ROW = TOP_ROW
$ ENDIF
$!
$CONFIRM_LOOP:
$!
$ IF PRM .EQS. ""
$ THEN
$ PROMPT = ESC + "[''ROW';''COL'H''ITM' ? [''DEF'] ''CEOL'"
$ ELSE
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' [''DEF'] ''CEOL'"
$ ENDIF
$ IF TYP .EQS. "P" THEN SET TERMINAL /NOECHO
$ ASK "''PROMPT'" ANS /END_OF_FILE=EXIT
$ IF TYP .EQS. "P" THEN SET TERMINAL /ECHO
$ ANS = F$EDIT (ANS,"TRIM")
$ IF ANS .EQS. "" THEN ANS = DEF
$ IF TYP .EQS. "F"
$ THEN
$ ANS = F$PARSE ("''ANS'","''DEF'",,,"SYNTAX_ONLY")
$ ENDIF
$ IF TYP .EQS. "I" .AND. F$TYPE (ANS) .NES. "INTEGER"
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF (TYP .EQS. "S" .OR. TYP .EQS. "P") .AND. -
((MIN .NES. "" .AND. F$LENGTH (ANS) .LT. F$INTEGER(MIN)) .OR. -
(MAX .NES. "" .AND. F$LENGTH (ANS) .GT. F$INTEGER(MAX)))
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ IF TYP .EQS. "S" THEN GOTO PROMPT_LOOP
$ IF TYP .EQS. "P" THEN GOTO CONFIRM_LOOP
$ ENDIF
$ ROW = ROW + 1
$ IF CFM .EQS. "Y"
$ THEN
$ IF CONFIRMED .EQ. 0
$ THEN
$ CONFIRMED = 1
$ CONFIRMED_ANS = ANS
$ PRM = "Confirm ''PRM'"
$ GOTO CONFIRM_LOOP
$ ELSE
$ IF ANS .NES. CONFIRMED_ANS
$ THEN
$ CALL INVALID_ENTRY
$ ROW = ROW - 2
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$ ENDIF
$ IF ANS .NES. DEF THEN SSL_USER_DATA_'CTR' = "''KEY'#''ITM'#''VAL'#''ANS'#''PRM'#''TYP'#''MIN'#''MAX'#Y#''REQ'#''CFM'"
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Save the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Saving Configuration ...", NORM
$!
$SAVE_CONF_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ IF UPD .NES. "Y" .OR. VAL .EQS. "-"
$ THEN
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$ IF VAL .EQS. "D"
$ THEN
$ SET_CONF_DATA "''KEY'#''ITM'" "''DEF'"
$ ELSE
$ SET_CONF_DATA "''KEY'#''ITM'" "''PRM'"
$ SET_CONF_DATA "''KEY'#''ITM'_default" "''DEF'"
$ ENDIF
$ IF MIN .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_min" "''MIN'"
$ IF MAX .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_max" "''MAX'"
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$!
$ PURGE /NOLOG /NOCONFIRM 'SSL_CONF_FILE'
$ RENAME 'SSL_CONF_FILE'; ;1
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Create the Server Certificiate
$!------------------------------------------------------------------------------
$!
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Creating Certificate Request ...", NORM
$!
$ X1 = 2
$ Y1 = TOP_ROW
$ X2 = TT_COLS - 2
$ Y2 = MSG_ROW - 1
$!
$ GET_USER_DATA "[]#encrypt_key"
$ _encrypt_key = SSL_USER_DATA
$ IF F$EDIT (_encrypt_key,"UPCASE") .EQS. "Y"
$ THEN
$ GET_USER_DATA "[]#pem_pass_phrase"
$ _pem_pass_phrase = SSL_USER_DATA
$ ENDIF
$ GET_USER_DATA "[req]#default_bits"
$ _default_bits = SSL_USER_DATA
$ GET_USER_DATA "[req]#default_keyfile"
$ _default_keyfile = SSL_USER_DATA
$ GET_USER_DATA "[req]#default_csrfile"
$ _default_csrfile = SSL_USER_DATA
$ GET_USER_DATA "[]#display_certificate"
$ _display_certificate = SSL_USER_DATA
$!
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_GENRSA_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_GENRSA_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_GENRSA_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_GENRSA_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_GENRSA_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ IF _encrypt_key .EQS. "Y"
$ THEN
$ WRITE OFILE "$ OPENSSL genrsa -des3 -out ''_default_keyfile' ''_default_bits'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ ELSE
$ WRITE OFILE "$ OPENSSL genrsa -out ''_default_keyfile' ''_default_bits'"
$ ENDIF
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_GENRSA_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.RND;*
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_GENRSA_'PID'.LOG /OUT=SYS$LOGIN:SSL_GENRSA_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_GENRSA_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_GENRSA_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_GENRSA_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.LOG;*
$!
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_REQ_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_REQ_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_REQ_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ IF _encrypt_key .EQS. "Y"
$ THEN
$ WRITE OFILE "$ OPENSSL req -new -config ''SSL_CONF_FILE' -key ''_default_keyfile' -out ''_default_csrfile'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ ELSE
$ WRITE OFILE "$ OPENSSL req -new -nodes -config ''SSL_CONF_FILE' -keyout ''_default_keyfile' -out ''_default_csrfile'"
$ ENDIF
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_REQ_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_REQ_'PID'.LOG /OUT=SYS$LOGIN:SSL_REQ_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_REQ_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$!
$ IF F$EDIT (_display_certificate,"TRIM,UPCASE") .EQS. "Y"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Generating Output ...", NORM, CEOL
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_REQ_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL req -noout -text -config ''SSL_CONF_FILE' -in ''_default_csrfile'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_REQ_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_REQ_'PID'.LOG /OUT=SYS$LOGIN:SSL_REQ_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_REQ_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''_default_csrfile' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$!
$ TEXT = "Press return to continue"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$ PROMPT = ESC + "[''MSG_ROW';''COL'H''TEXT'"
$ ASK "''PROMPT'" OPT
$!
$GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Set the User Data
$!------------------------------------------------------------------------------
$!
$SET_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. ""
$ THEN
$ SSL_USER_DATA_MAX == 1
$ ELSE
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX + 1
$ ENDIF
$!
$ SSL_USER_DATA_'SSL_USER_DATA_MAX' == "''P1'"
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Get the User Data
$!------------------------------------------------------------------------------
$!
$GET_USER_DATA: SUBROUTINE
$!
$ CTR = 1
$ USER_KEY = F$ELEMENT (0,"#",P1)
$ USER_ITM = F$ELEMENT (1,"#",P1)
$!
$GET_USER_DATA_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ IF USER_KEY .NES. KEY .OR. USER_ITM .NES. ITM
$ THEN
$ CTR = CTR + 1
$ GOTO GET_USER_DATA_LOOP
$ ENDIF
$ IF VAL .EQS. "-" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "D" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "P" THEN SSL_USER_DATA == "''PRM'"
$ ENDIF
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Delete the User Data
$!------------------------------------------------------------------------------
$!
$DEL_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. "" THEN GOTO DEL_USER_DATA_END
$!
$DEL_USER_DATA_LOOP:
$!
$ IF F$TYPE (SSL_USER_DATA_'SSL_USER_DATA_MAX') .NES. ""
$ THEN
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_'SSL_USER_DATA_MAX'
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX - 1
$ GOTO DEL_USER_DATA_LOOP
$ ENDIF
$!
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_MAX
$!
$DEL_USER_DATA_END:
$!
$ IF F$TYPE (SSL_USER_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_USER_DATA
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''MSG_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''MSG_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$!
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ DEL_USER_DATA
$!
$ IF F$TYPE (SSL_CONF_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_CONF_DATA
$!
$ IF F$GETDVI ("TT:","TT_NOECHO") .AND. .NOT. TT_NOECHO THEN SET TERMINAL /ECHO
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_GENRSA_''PID'.%%%;*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_GENRSA_'PID'.%%%;*
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.%%%;*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.%%%;*
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,725 @@
$!
$!------------------------------------------------------------------------------
$! SSL$SELF_CERT.COM - SSL Self Signed Certificate procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through creating a Server Certificate.
$!
$! There are no parameters used.
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ PID = F$GETJPI ("","PID")
$ TT_NOECHO = F$GETDVI ("TT:","TT_NOECHO")
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ GET_USER_DATA := CALL GET_USER_DATA
$ SET_USER_DATA := CALL SET_USER_DATA
$ DEL_USER_DATA := CALL DEL_USER_DATA
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$ SHOW_FILE := @SSL$COM:SSL$SHOW_FILE
$ SSL_CONF_FILE = F$TRNLNM ("SSL$CONF")
$ GET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' GET
$ SET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' SET
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$ROOT") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ TEXT = "Create Self-Signed Certificate"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Reading Configuration ...", NORM
$ ELSE
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Initializing Configuration ...", NORM
$ ENDIF
$!
$ _request_name = "req"
$!
$ _distinguished_name = "REQ_distinguished_name"
$ _distinguished_name_upd = "Y"
$!
$ _default_bits = "1024"
$ _default_bits_upd = "Y"
$!
$ _default_keyfile = "SSL$KEY:SERVER.KEY"
$ _default_keyfile_upd = "Y"
$!
$ _default_crtfile = "SSL$CRT:SERVER.CRT"
$ _default_crtfile_upd = "Y"
$!
$ _countryName_prompt = "Country Name ?"
$ _countryName_min = "2"
$ _countryName_max = "2"
$ _countryName_default = "US"
$ _countryName_upd = "Y"
$ _countryName_cnt = 4
$!
$ _stateOrProvinceName_prompt = "State or Province Name ?"
$ _stateOrProvinceName_default = ""
$ _stateOrProvinceName_upd = "Y"
$ _stateOrProvinceName_cnt = 2
$!
$ _localityName_prompt = "City Name ?"
$ _localityName_default = ""
$ _localityName_upd = "Y"
$ _localityName_cnt = 2
$!
$ _0organizationName_prompt = "Organization Name ?"
$ _0organizationName_default = ""
$ _0organizationName_upd = "Y"
$ _0organizationName_cnt = 2
$!
$ _organizationalUnitName_prompt = "Organization Unit Name ?"
$ _organizationalUnitName_default = ""
$ _organizationalUnitName_upd = "Y"
$ _organizationalUnitName_cnt = 2
$!
$ _commonName_prompt = "Common Name ?"
$ _commonName_max = "64"
$ HOSTNAME -s _commonName_default
$ _commonName_upd = "Y"
$ _commonName_cnt = 3
$!
$ _emailAddress_prompt = "Email Address ?"
$ _emailAddress_max = "40"
$ _emailAddress_default = "webmaster@''_commonName_default'"
$ _emailAddress_upd = "Y"
$ _emailAddress_cnt = 3
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ GET_CONF_DATA "[''_request_name']#distinguished_name"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _distinguished_name = SSL_CONF_DATA
$ _distinguished_name_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_bits"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_bits = SSL_CONF_DATA
$ _default_bits_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_keyfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_keyfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[KEY]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".KEY",,"TYPE")
$ _default_keyfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_request_name']#default_crtfile"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_crtfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[CRT]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".CRT",,"TYPE")
$ _default_crtfile_upd = "N"
$ ENDIF
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#countryName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_min"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_min = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#countryName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _countryName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _countryName_cnt .EQS. CTR THEN _countryName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#stateOrProvinceName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _stateOrProvinceName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#stateOrProvinceName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _stateOrProvinceName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _stateOrProvinceName_cnt .EQ. CTR THEN _stateOrProvinceName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#localityName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _localityName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#localityName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _localityName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _localityName_cnt .EQ. CTR THEN _localityName_default_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#0.organizationName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _0organizationName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _0organizationName_cnt .EQ. CTR THEN _0organizationName_default_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#organizationalUnitName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _organizationalUnitName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _organizationalUnitName_cnt .EQ. CTR THEN _organizationalUnitName_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#commonName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#commonName_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _commonName_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _commonName_cnt .EQ. CTR THEN _commonName_default_upd = "N"
$!
$ CTR = 0
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_prompt = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress_max"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_max = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ GET_CONF_DATA "[''_distinguished_name']#emailAddress_default"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _emailAddress_default = SSL_CONF_DATA
$ CTR = CTR + 1
$ ENDIF
$ IF _emailAddress_cnt .EQ. CTR THEN _emailAddress_default_upd = "N"
$ ENDIF
$!
$ SET_USER_DATA "[]#encrypt_key#-#N#Encrypt Private Key ?#S##1##Y#N"
$ SET_USER_DATA "[]#pem_pass_phrase#-##PEM Pass Phrase ?#P#1###Y#Y"
$ SET_USER_DATA "[''_request_name']#default_bits#D#''_default_bits'#Encryption Bits ?#I###''_default_bits_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_keyfile#D#''_default_keyfile'#Certificate Key File ?#F###''_default_keyfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#default_crtfile#D#''_default_crtfile'#Certificate File ?#F###''_default_crtfile_upd'#Y#N"
$ SET_USER_DATA "[''_request_name']#distinguished_name#D#''_distinguished_name'##S###''_distinguished_name_upd'#N#N"
$ SET_USER_DATA "[''_distinguished_name']#countryName#P#''_countryName_default'#''_countryName_prompt'#S#''_countryName_min'#''#''_countryName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#stateOrProvinceName#P#''_stateOrProvinceName_default'#''_stateOrProvinceName_prompt'####''_stateOrProvinceName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#localityName#P#''_localityName_default'#''_localityName_prompt'#S###''_localityName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#0.organizationName#P#''_0organizationName_default'#''_0organizationName_prompt'#S###''_0organizationalName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#organizationalUnitName#P#''_organizationalUnitName_default'#''_organizationalUnitName_prompt#S###''_organizationalUnitName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#commonName#P#''_commonName_default'#''_commonName_prompt'#S##''_commonName_max'#''_commonName_upd'#Y#N"
$ SET_USER_DATA "[''_distinguished_name']#emailAddress#P#''_emailAddress_default'#''_emailAddress_prompt'#S##''_emailAddress_max'#''_emailAddress_upd'#Y#N"
$ SET_USER_DATA "[]#display_certificate#-#N#Display the Certificate ?#S##1##Y#N"
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$!
$PROMPT_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$!
$! The PEM Pass Phrase prompt is dependant on the answer to encrypt the private key
$!
$ IF KEY .EQS. "[]" .AND. ITM .EQS. "pem_pass_phrase"
$ THEN
$ GET_USER_DATA "[]#encrypt_key"
$ _encrypt_key = SSL_USER_DATA
$ IF F$EDIT (_encrypt_key,"UPCASE") .NES. "Y"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$!
$ CONFIRMED = 0
$ IF REQ .EQS. "N"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF ROW .GT. MSG_ROW - 2
$ THEN
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$ ROW = TOP_ROW
$ ENDIF
$!
$CONFIRM_LOOP:
$!
$ IF PRM .EQS. ""
$ THEN
$ PROMPT = ESC + "[''ROW';''COL'H''ITM' ? [''DEF'] ''CEOL'"
$ ELSE
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' [''DEF'] ''CEOL'"
$ ENDIF
$ IF TYP .EQS. "P" THEN SET TERMINAL /NOECHO
$ ASK "''PROMPT'" ANS /END_OF_FILE=EXIT
$ IF TYP .EQS. "P" THEN SET TERMINAL /ECHO
$ ANS = F$EDIT (ANS,"TRIM")
$ IF ANS .EQS. "" THEN ANS = DEF
$ IF TYP .EQS. "F"
$ THEN
$ ANS = F$PARSE ("''ANS'","''DEF'",,,"SYNTAX_ONLY")
$ ENDIF
$ IF TYP .EQS. "I" .AND. F$TYPE (ANS) .NES. "INTEGER"
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF (TYP .EQS. "S" .OR. TYP .EQS. "P") .AND. -
((MIN .NES. "" .AND. F$LENGTH (ANS) .LT. F$INTEGER(MIN)) .OR. -
(MAX .NES. "" .AND. F$LENGTH (ANS) .GT. F$INTEGER(MAX)))
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ IF TYP .EQS. "S" THEN GOTO PROMPT_LOOP
$ IF TYP .EQS. "P" THEN GOTO CONFIRM_LOOP
$ ENDIF
$ ROW = ROW + 1
$ IF CFM .EQS. "Y"
$ THEN
$ IF CONFIRMED .EQ. 0
$ THEN
$ CONFIRMED = 1
$ CONFIRMED_ANS = ANS
$ PRM = "Confirm ''PRM'"
$ GOTO CONFIRM_LOOP
$ ELSE
$ IF ANS .NES. CONFIRMED_ANS
$ THEN
$ CALL INVALID_ENTRY
$ ROW = ROW - 2
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$ ENDIF
$ IF ANS .NES. DEF THEN SSL_USER_DATA_'CTR' = "''KEY'#''ITM'#''VAL'#''ANS'#''PRM'#''TYP'#''MIN'#''MAX'#Y#''REQ'#''CFM'"
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Save the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Saving Configuration ...", NORM
$!
$SAVE_CONF_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ IF UPD .NES. "Y" .OR. VAL .EQS. "-"
$ THEN
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$ IF VAL .EQS. "D"
$ THEN
$ SET_CONF_DATA "''KEY'#''ITM'" "''DEF'"
$ ELSE
$ SET_CONF_DATA "''KEY'#''ITM'" "''PRM'"
$ SET_CONF_DATA "''KEY'#''ITM'_default" "''DEF'"
$ ENDIF
$ IF MIN .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_min" "''MIN'"
$ IF MAX .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_max" "''MAX'"
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$!
$ PURGE /NOLOG /NOCONFIRM 'SSL_CONF_FILE'
$ RENAME 'SSL_CONF_FILE'; ;1
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Create the Server Certificiate
$!------------------------------------------------------------------------------
$!
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Creating Self-Signed Certificate ...", NORM
$!
$ X1 = 2
$ Y1 = TOP_ROW
$ X2 = TT_COLS - 2
$ Y2 = MSG_ROW - 1
$!
$ GET_USER_DATA "[]#encrypt_key"
$ _encrypt_key = SSL_USER_DATA
$ IF F$EDIT (_encrypt_key,"UPCASE") .EQS. "Y"
$ THEN
$ GET_USER_DATA "[]#pem_pass_phrase"
$ _pem_pass_phrase = SSL_USER_DATA
$ ENDIF
$ GET_USER_DATA "[''_request_name']#default_bits"
$ _default_bits = SSL_USER_DATA
$ GET_USER_DATA "[''_request_name']#default_keyfile"
$ _default_keyfile = SSL_USER_DATA
$ GET_USER_DATA "[''_request_name']#default_crtfile"
$ _default_crtfile = SSL_USER_DATA
$ GET_USER_DATA "[]#display_certificate"
$ _display_certificate = SSL_USER_DATA
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_REQ_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_REQ_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_REQ_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ IF F$EDIT (_encrypt_key,"UPCASE") .EQS. "Y"
$ THEN
$ WRITE OFILE "$ OPENSSL req -config ''SSL_CONF_FILE' -new -days 365 -x509 -keyout ''_default_keyfile' -out ''_default_crtfile'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ ELSE
$ WRITE OFILE "$ OPENSSL req -config ''SSL_CONF_FILE' -nodes -new -days 365 -x509 -keyout ''_default_keyfile' -out ''_default_crtfile'"
$ ENDIF
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ WRITE OFILE ""
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_REQ_'PID'.COM
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_REQ_'PID'.LOG /OUT=SYS$LOGIN:SSL_REQ_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_REQ_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$!
$ IF F$EDIT (_display_certificate,"TRIM,UPCASE") .EQS. "Y"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Generating Output ...", NORM, CEOL
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_X509_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL x509 -noout -text -in ''_default_crtfile'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_X509_'PID'.COM
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_X509_'PID'.LOG /OUT=SYS$LOGIN:SSL_X509_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_X509_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''_default_crtfile' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$!
$ TEXT = "Press return to continue"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$ PROMPT = ESC + "[''MSG_ROW';''COL'H''TEXT'"
$ ASK "''PROMPT'" OPT
$!
$GOTO EXIT
z$!
$!------------------------------------------------------------------------------
$! Set the User Data
$!------------------------------------------------------------------------------
$!
$SET_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. ""
$ THEN
$ SSL_USER_DATA_MAX == 1
$ ELSE
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX + 1
$ ENDIF
$!
$ SSL_USER_DATA_'SSL_USER_DATA_MAX' == "''P1'"
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Find the Request Data
$!------------------------------------------------------------------------------
$!
$GET_USER_DATA: SUBROUTINE
$!
$ CTR = 1
$ USER_KEY = F$ELEMENT (0,"#",P1)
$ USER_ITM = F$ELEMENT (1,"#",P1)
$!
$GET_USER_DATA_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ IF USER_KEY .NES. KEY .OR. USER_ITM .NES. ITM
$ THEN
$ CTR = CTR + 1
$ GOTO GET_USER_DATA_LOOP
$ ENDIF
$ IF VAL .EQS. "-" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "D" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "P" THEN SSL_USER_DATA == "''PRM'"
$ ENDIF
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Delete the User Data
$!------------------------------------------------------------------------------
$!
$DEL_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. "" THEN GOTO DEL_USER_DATA_END
$!
$DEL_USER_DATA_LOOP:
$!
$ IF F$TYPE (SSL_USER_DATA_'SSL_USER_DATA_MAX') .NES. ""
$ THEN
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_'SSL_USER_DATA_MAX'
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX - 1
$ GOTO DEL_USER_DATA_LOOP
$ ENDIF
$!
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_MAX
$!
$DEL_USER_DATA_END:
$!
$ IF F$TYPE (SSL_USER_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_USER_DATA
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''MSG_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''MSG_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$!
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ DEL_USER_DATA
$!
$ IF F$TYPE (SSL_CONF_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_CONF_DATA
$!
$ IF F$GETDVI ("TT:","TT_NOECHO") .AND. .NOT. TT_NOECHO THEN SET TERMINAL /ECHO
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.%%%;*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.%%%;*
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.%%%;*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.%%%;*
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,205 @@
$!
$!------------------------------------------------------------------------------
$! SSL$SHOW_FILE.COM - SSL Show File procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure display the contents of a given file in a box size specified.
$!
$! The parameters used are:
$!
$! P1 - File to View
$! P2 - X1 coordinate
$! P3 - Y1 coordinate
$! P4 - X2 coordinate
$! P5 - Y3 coordinate
$! P6 - File Box Title (Optional)
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ DRAW_BOX := @SSL$COM:SSL$DRAW_BOX
$ FILL_BOX := @SSL$COM:SSL$FILL_BOX
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BOLD = ESC + "[1m" ! Turn on BOLD Attribute
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ REC_MAX = 0
$ OPEN /READ IFILE 'P1'
$!
$READ_LOOP:
$!
$ READ /END_OF_FILE=READ_END IFILE IREC
$ REC_MAX = REC_MAX + 1
$ REC_'REC_MAX' = IREC
$ GOTO READ_LOOP
$!
$READ_END:
$!
$ CLOSE IFILE
$!
$ IF REC_MAX .EQ. 0
$ THEN
$ DRAW_BOX 'P2' 'P3' 'P4' 'P5' "''P6'" " ** End-of-File **, Press Return to Exit "
$ INPUT_ROW = P5 + 1
$ PROMPT = ESC + "[''INPUT_ROW';01H ''CEOL'"
$ ASK "''PROMPT'" OPT
$ GOTO EXIT
$ ENDIF
$!
$ COL = P2 + 2
$ ROW = P3 + 2
$ TOP_ROW = ROW
$ INPUT_ROW = P5 + 1
$ BOX_WIDTH = P4 - (P2 + 2)
$ BOX_HEIGHT = P5 - (P3 + 3)
$!
$ REC_CTR = 1
$ PAGE_CTR = 1
$ PAGE_'PAGE_CTR'_REC_CTR = REC_CTR
$ RECS_PER_PAGE = BOX_HEIGHT
$ PAGE_MAX = REC_MAX / RECS_PER_PAGE
$ IF PAGE_MAX * RECS_PER_PAGE .LT. REC_MAX THEN PAGE_MAX = PAGE_MAX + 1
$!
$ DRAW_BOX 'P2' 'P3' 'P4' 'P5' "''P6'" " Enter B for Back, N for Next, Ctrl-Z to Exit "
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$!
$DISPLAY_LOOP:
$!
$ IF REC_CTR .LE. REC_MAX .AND. F$TYPE (REC_'REC_CTR') .NES. ""
$ THEN
$ REC = REC_'REC_CTR'
$ ENDIF
$ WRAP_IN_PROGRESS = 0
$!
$WRAP_LOOP:
$!
$ IF ROW .LE. (P5 - 2) .AND. -
REC_CTR .LE. PAGE_CTR * RECS_PER_PAGE
$ THEN
$ IF F$LENGTH (REC) .GT. BOX_WIDTH
$ THEN
$ IF WRAP_IN_PROGRESS .EQ. 0
$ THEN
$ WRAP_IN_PROGRESS = 1
$ _COL = COL
$ ELSE
$ _COL = COL - 1
$ ENDIF
$ REC_SEG = F$EXTRACT (0, BOX_WIDTH, REC)
$ SAY ESC + "[''ROW';''_COL'H", REC_SEG
$ REC = ">" + F$EXTRACT (BOX_WIDTH, F$LENGTH (REC)-BOX_WIDTH, REC)
$ ROW = ROW + 1
$ GOTO WRAP_LOOP
$ ELSE
$ IF REC_CTR .LE. REC_MAX .AND. F$TYPE (REC_'REC_CTR') .NES. ""
$ THEN
$ IF WRAP_IN_PROGRESS .EQ. 1
$ THEN
$ _COL = COL - 1
$ ELSE
$ _COL = COL
$ ENDIF
$ SAY ESC + "[''ROW';''_COL'H", REC
$ ENDIF
$ ENDIF
$ ELSE
$!
$RETRY:
$!
$ PROMPT = ESC + "[''INPUT_ROW';01H ''CEOL'"
$ ASK "''PROMPT'" OPT
$ IF F$EDIT (OPT,"TRIM,UPCASE") .NES. "B" .AND. -
F$EDIT (OPT,"TRIM,UPCASE") .NES. "N"
$ THEN
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ IF F$EDIT (OPT,"TRIM,UPCASE") .EQS. "B"
$ THEN
$ IF PAGE_CTR .GT. 1
$ THEN
$ ROW = TOP_ROW
$ PAGE_CTR = PAGE_CTR - 1
$ REC_CTR = PAGE_'PAGE_CTR'_REC_CTR
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ GOTO DISPLAY_LOOP
$ ELSE
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ ENDIF
$ IF F$EDIT (OPT,"TRIM,UPCASE") .EQS. "N"
$ THEN
$ IF PAGE_CTR .LT. PAGE_MAX
$ THEN
$ PAGE_CTR = PAGE_CTR + 1
$ PAGE_'PAGE_CTR'_REC_CTR = REC_CTR
$ PAGE_TXT = F$FAO (" Page !UL of !UL ", PAGE_CTR, PAGE_MAX)
$ _COL = P2 + (BOX_WIDTH - F$LENGTH (PAGE_TXT)) + 2
$ SAY ESC + "[''P3';''_COL'H''BOLD'''PAGE_TXT'''NORM'"
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ ELSE
$ CALL INVALID_ENTRY
$ GOTO RETRY
$ ENDIF
$ ENDIF
$ FILL_BOX 'P2' 'P3' 'P4' 'P5'
$ ROW = TOP_ROW
$ GOTO WRAP_LOOP
$ ENDIF
$ REC_CTR = REC_CTR + 1
$ ROW = ROW + 1
$ GOTO DISPLAY_LOOP
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''INPUT_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''INPUT_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Exit
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE IFILE
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,759 @@
$!
$!------------------------------------------------------------------------------
$! SSL$SIGN_CERT.COM - SSL Sign Certificate Request procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through creating a Server Certificate.
$!
$! There are no parameters used.
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ PID = F$GETJPI ("","PID")
$ TT_NOECHO = F$GETDVI ("TT:","TT_NOECHO")
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ GET_USER_DATA := CALL GET_USER_DATA
$ SET_USER_DATA := CALL SET_USER_DATA
$ DEL_USER_DATA := CALL DEL_USER_DATA
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$ SHOW_FILE := @SSL$COM:SSL$SHOW_FILE
$ SSL_CONF_FILE = F$TRNLMN ("SSL$CA_CONF")
$ GET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' GET
$ SET_CONF_DATA := @SSL$COM:SSL$CONF_UTIL 'SSL_CONF_FILE' SET
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$ROOT") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ TEXT = "Sign Certificate Request"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ CTR = 1
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Reading Configuration ...", NORM
$ ELSE
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Initializing Configuration ...", NORM
$ ENDIF
$!
$ _ca = "ca"
$!
$ _default_ca = "CA_default_ca"
$ _default_ca_upd = "Y"
$!
$ _default_serfile = "SSL$DB:SERIAL.TXT"
$ _default_serfile_upd = "Y"
$!
$ _default_idxfile = "SSL$DB:INDEX.TXT"
$ _default_idxfile_upd = "Y"
$!
$ _default_crtfile = "SSL$CRT:SERVER_CA.CRT"
$ _default_crtfile_upd = "Y"
$!
$ _default_keyfile = "SSL$KEY:SERVER_CA.KEY"
$ _default_keyfile_upd = "Y"
$!
$ _default_csrfile = "SSL$CSR:SERVER.CSR"
$ _default_csrfile_upd = "Y"
$!
$ _default_sgnfile = "SSL$CRT:SIGNED.CRT"
$ _default_sgnfile_upd = "Y"
$!
$ _default_newcert = "SSL$CRT"
$ _default_newcert_upd = "Y"
$!
$ _default_md = "md5"
$ _default_md_upd = "Y"
$!
$ _default_days = "365"
$ _default_days_upd = "Y"
$!
$ _default_policy = "policy_anything"
$ _default_policy_upd = "Y"
$!
$ _policy_countryName = "optional"
$ _policy_countryName_upd = "Y"
$!
$ _policy_stateOrProvinceName = "optional"
$ _policy_stateOrProvinceName_upd = "Y"
$!
$ _policy_localityName = "optional"
$ _policy_localityName_upd = "Y"
$!
$ _policy_organizationName = "optional"
$ _policy_organizationName_upd = "Y"
$!
$ _policy_organizationalUnitName = "optional"
$ _policy_organizationalUnitName_upd = "Y"
$!
$ _policy_commonName = "supplied"
$ _policy_commonName_upd = "Y"
$!
$ _policy_emailAddress = "optional"
$ _policy_emailAddress_upd = "Y"
$!
$ _default_x509_extensions = "CA_x509_extensions"
$ _default_x509_extensions_upd = "Y"
$!
$ _x509_basicContraints = "CA:FALSE"
$ _x509_basicContraints_upd = "Y"
$!
$ _x509_nsCertType = "client,email,objsign,server"
$ _x509_nsCertType_upd = "Y"
$!
$ _x509_nsComment = "SSL Generated Certificate"
$ _x509_nsComment_upd = "Y"
$!
$ _x509_subjectKeyIdentifier = "hash"
$ _x509_subjectKeyIdentifier_upd = "Y"
$!
$ _x509_authorityKeyIdentifier = "keyid,issuer:always"
$ _x509_authorityKeyIdentifier_upd = "Y"
$!
$ IF F$SEARCH ("''SSL_CONF_FILE'") .NES. ""
$ THEN
$ GET_CONF_DATA "[''_ca']#default_ca"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_ca = SSL_CONF_DATA
$ _default_ca_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#serial"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_serfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[DB]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERIAL",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".TXT",,"TYPE")
$ _default_serfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#database"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_idxfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[DB]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"INDEX",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".TXT",,"TYPE")
$ _default_idxfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#certificate"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_crtfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[CRT]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER_CA",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".CRT",,"TYPE")
$ _default_crtfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#private_key"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_keyfile = F$PARSE (SSL_CONF_DATA,"SSL$ROOT:",,"DEVICE") + -
F$PARSE (SSL_CONF_DATA,"[KEY]",,"DIRECTORY") + -
F$PARSE (SSL_CONF_DATA,"SERVER_CA",,"NAME") + -
F$PARSE (SSL_CONF_DATA,".KEY",,"TYPE")
$ _default_keyfile_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#new_certs_dir"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_newcert = SSL_CONF_DATA
$ _default_newcert_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#default_md"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_md = SSL_CONF_DATA
$ _default_md_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#default_days"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_days = SSL_CONF_DATA
$ _default_days_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#policy"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_policy = SSL_CONF_DATA
$ _default_policy_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#countryName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_countryName = SSL_CONF_DATA
$ _policy_countryName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#stateOrProvinceName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_stateOrProvinceName = SSL_CONF_DATA
$ _policy_stateOrProvinceName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#localityName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_localityName = SSL_CONF_DATA
$ _policy_localityName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#organizationName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_organizationName = SSL_CONF_DATA
$ _policy_organizationName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#organizationalUnitName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_organizationalUnitName = SSL_CONF_DATA
$ _policy_organizationalUnitName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#commonName"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_commonName = SSL_CONF_DATA
$ _policy_commonName_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_policy']#emailAddress"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _policy_emailAddress = SSL_CONF_DATA
$ _policy_emailAddress_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_ca']#x509_extensions"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _default_x509_extensions = SSL_CONF_DATA
$ _default_x509_extensions_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_x509_extensions']#basicConstraints"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _x509_basicConstraints = SSL_CONF_DATA
$ _x509_basicConstraints_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_x509_extensions']#nsCertType"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _x509_nsCertType = SSL_CONF_DATA
$ _x509_nsCertType_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_x509_extensions']#nsComment"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _x509_nsComment = SSL_CONF_DATA
$ _x509_nsComment_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_x509_extensions']#subjectKeyIdentifier"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _x509_subjectKeyIdentifier = SSL_CONF_DATA
$ _x509_subjectKeyIdentifier_upd = "N"
$ ENDIF
$!
$ GET_CONF_DATA "[''_default_x509_extensions']#authorityKeyIdentifier"
$ IF SSL_CONF_DATA .NES. ""
$ THEN
$ _x509_authorityKeyIdentifier = SSL_CONF_DATA
$ _x509_authorityKeyIdentifier_upd = "N"
$ ENDIF
$ ENDIF
$!
$ SET_USER_DATA "[''_ca']#default_ca#D#''_default_ca'##S###''_default_ca_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#serial#D#''_default_serfile'#Serial File ?#F###''_default_serfile_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#database#D#''_default_idxfile'#Database File ?#F###''_default_idxfile_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#certificate#D#''_default_crtfile'#CA Certificate File ?#F###''_default_crtfile_upd'#Y#N"
$ SET_USER_DATA "[''_default_ca']#private_key#D#''_default_keyfile'#CA Certificate Key File ?#F###''_default_keyfile_upd'#Y#N"
$ SET_USER_DATA "[]#default_csrfile#-#''_default_csrfile'#Certificate Request File ?#F###''_default_csrfile_upd'#Y#N"
$ SET_USER_DATA "[]#default_sgnfile#-#''_default_sgnfile'#Signed Certificate File ?#F###''_default_sgnfile_upd'#Y#N"
$ SET_USER_DATA "[''_default_ca']#new_certs_dir#D#''_default_newcert'#New Certificate Directory ?#S###''_default_newcert_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#default_md#D#''_default_md'#Default Digest ?#I###''_default_md_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#default_days#D#''_default_days'#Default Days ?#I###''_default_days_upd'#Y#N"
$ SET_USER_DATA "[''_default_ca']#policy#D#''_default_policy'#Default Policy ?#S###''_default_policy_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#countryName#D#''_policy_countryName'#Country Name Policy ?#S###''_policy_countryName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#stateOrProvinceName#D#''_policy_stateOrProvinceName'#State or Province Name Policy ?#S###''_policy_stateOrProvinceName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#localityName#D#''_policy_localityName'#Locality Name Policy ?#S###''_policy_localityName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#organizationName#D#''_policy_organizationName'#Organization Name Policy ?#S###''_policy_organizationName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#organizationalUnitName#D#''_policy_organizationalUnitName'#Organization Unit Name Policy ?#S###''_policy_organizationalUnitName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#commonName#D#''_policy_commonName'#Common Name Policy ?#S###''_policy_commonName_upd'#N#N"
$ SET_USER_DATA "[''_default_policy']#emailAddress#D#''_policy_emailAddress'#Email Address Policy ?#S###''_policy_emailAddress_upd'#N#N"
$ SET_USER_DATA "[''_default_ca']#x509_extensions#D#''_default_x509_extensions'#X509 Extensions ?#S###''_default_x509_extensions_upd'#N#N"
$ SET_USER_DATA "[''_default_x509_extensions']#basicConstraints#D#''_x509_basicConstraints'#X509 Basic Constraints ?#S###''_x509_basicConstraints_upd'#N#N"
$ SET_USER_DATA "[''_default_x509_extensions']#nsCertType#D#''_x509_nsCertType'#X509 NS Cert Type ?#S###''_x509_nsCertType_upd'#N#N"
$ SET_USER_DATA "[''_default_x509_extensions']#nsComment#D#''_x509_nsComment'#X509 NS Comment ?#S###''_x509_nsComment_upd'#N#N"
$ SET_USER_DATA "[''_default_x509_extensions']#subjectKeyIdentifier#D#''_x509_subjectKeyIdentifier'#X509 Subject Key Identifier ?#S###''_x509_subjectKeyIdentifier_upd'#N#N"
$ SET_USER_DATA "[''_default_x509_extensions']#authorityKeyIdentifier#D#''_x509_authorityKeyIdentifier'#X509 Authority Key Identifier ?#S###''_x509_authorityKeyIdentifier_upd'#N#N"
$ SET_USER_DATA "[]#pem_pass_phrase#-##PEM Pass Phrase ?#P#1###Y#N"
$ SET_USER_DATA "[]#display_certificate#-#N#Display the Certificate ?#S##1##Y#N"
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$PROMPT_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ CONFIRMED = 0
$ IF REQ .EQS. "N"
$ THEN
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF ROW .GT. MSG_ROW - 2
$ THEN
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$ ROW = TOP_ROW
$ ENDIF
$!
$CONFIRM_LOOP:
$!
$ IF PRM .EQS. ""
$ THEN
$ PROMPT = ESC + "[''ROW';''COL'H''ITM' ? [''DEF'] ''CEOL'"
$ ELSE
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' [''DEF'] ''CEOL'"
$ ENDIF
$ IF TYP .EQS. "P" THEN SET TERMINAL /NOECHO
$ ASK "''PROMPT'" ANS /END_OF_FILE=EXIT
$ IF TYP .EQS. "P" THEN SET TERMINAL /ECHO
$ ANS = F$EDIT (ANS,"TRIM")
$ IF ANS .EQS. "" THEN ANS = DEF
$ IF TYP .EQS. "F"
$ THEN
$ ANS = F$PARSE ("''ANS'","''DEF'",,,"SYNTAX_ONLY")
$ ENDIF
$ IF TYP .EQS. "I" .AND. F$TYPE (ANS) .NES. "INTEGER"
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ IF (TYP .EQS. "S" .OR. TYP .EQS. "P") .AND. -
((MIN .NES. "" .AND. F$LENGTH (ANS) .LT. F$INTEGER(MIN)) .OR. -
(MAX .NES. "" .AND. F$LENGTH (ANS) .GT. F$INTEGER(MAX)))
$ THEN
$ CALL INVALID_ENTRY
$ SAY ESC + "[''ROW';01H", CEOS
$ IF TYP .EQS. "S" THEN GOTO PROMPT_LOOP
$ IF TYP .EQS. "P" THEN GOTO CONFIRM_LOOP
$ ENDIF
$ ROW = ROW + 1
$ IF CFM .EQS. "Y"
$ THEN
$ IF CONFIRMED .EQ. 0
$ THEN
$ CONFIRMED = 1
$ CONFIRMED_ANS = ANS
$ PRM = "Confirm ''PRM'"
$ GOTO CONFIRM_LOOP
$ ELSE
$ IF ANS .NES. CONFIRMED_ANS
$ THEN
$ CALL INVALID_ENTRY
$ ROW = ROW - 2
$ SAY ESC + "[''ROW';01H", CEOS
$ GOTO PROMPT_LOOP
$ ENDIF
$ ENDIF
$ ENDIF
$ IF ANS .NES. DEF THEN SSL_USER_DATA_'CTR' = "''KEY'#''ITM'#''VAL'#''ANS'#''PRM'#''TYP'#''MIN'#''MAX'#Y#''REQ'#''CFM'"
$ CTR = CTR + 1
$ GOTO PROMPT_LOOP
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Save the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$ CTR = 1
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Saving Configuration ...", NORM
$!
$SAVE_CONF_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ TYP = F$ELEMENT (5,"#",SSL_USER_DATA_'CTR') ! Value Type
$ MIN = F$ELEMENT (6,"#",SSL_USER_DATA_'CTR') ! Value Minimum Length
$ MAX = F$ELEMENT (7,"#",SSL_USER_DATA_'CTR') ! Value Maximum Length
$ UPD = F$ELEMENT (8,"#",SSL_USER_DATA_'CTR') ! Entry Updated ?
$ REQ = F$ELEMENT (9,"#",SSL_USER_DATA_'CTR') ! Entry Required for Input ?
$ CFM = F$ELEMENT (10,"#",SSL_USER_DATA_'CTR')! Confirm Input ?
$ IF UPD .NES. "Y" .OR. VAL .EQS. "-"
$ THEN
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$ IF VAL .EQS. "D"
$ THEN
$ SET_CONF_DATA "''KEY'#''ITM'" "''DEF'"
$ ELSE
$ SET_CONF_DATA "''KEY'#''ITM'" "''PRM'"
$ SET_CONF_DATA "''KEY'#''ITM'_default" "''DEF'"
$ ENDIF
$ IF MIN .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_min" "''MIN'"
$ IF MAX .NES. "" THEN SET_CONF_DATA "''KEY'#''ITM'_max" "''MAX'"
$ CTR = CTR + 1
$ GOTO SAVE_CONF_LOOP
$ ENDIF
$!
$ PURGE /NOLOG /NOCONFIRM 'SSL_CONF_FILE'
$ RENAME 'SSL_CONF_FILE'; ;1
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Create the Certificiate Authority
$!------------------------------------------------------------------------------
$!
$SKIP:
$!
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Signing Certificate Request ...", NORM
$!
$ X1 = 2
$ Y1 = TOP_ROW
$ X2 = TT_COLS - 2
$ Y2 = MSG_ROW - 1
$!
$ GET_USER_DATA "[]#pem_pass_phrase"
$ _pem_pass_phrase = SSL_USER_DATA
$ GET_USER_DATA "[''_default_ca']#database"
$ _default_idxfile = SSL_USER_DATA
$ GET_USER_DATA "[''_default_ca']#serial"
$ _default_serfile = SSL_USER_DATA
$ GET_USER_DATA "[]#default_csrfile"
$ _default_csrfile = SSL_USER_DATA
$ GET_USER_DATA "[]#default_sgnfile"
$ _default_sgnfile = SSL_USER_DATA
$ GET_USER_DATA "[]#display_certificate"
$ _display_certificate = SSL_USER_DATA
$!
$ IF F$SEARCH ("''_default_idxfile'") .EQS. ""
$ THEN
$ OPEN /WRITE OFILE '_default_idxfile'
$ CLOSE OFILE
$ ENDIF
$!
$ IF F$SEARCH ("''_default_serfile'") .EQS. ""
$ THEN
$ OPEN /WRITE OFILE '_default_serfile'
$ WRITE OFILE "01"
$ CLOSE OFILE
$ ENDIF
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SHOW SYSTEM /FULL /OUT=SYS$LOGIN:SSL_CA_'PID'.RND
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_CA_'PID'.COM
$ WRITE OFILE "$ SET NOON"
$ WRITE OFILE "$ SET MESSAGE /NOFACILITY /NOIDENTIFICATION /NOSEVERITY /NOTEXT"
$ WRITE OFILE "$ DEFINE /USER /NOLOG RANDFILE SYS$LOGIN:SSL_CA_''PID'.RND"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_CA_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_CA_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL ca -config ''SSL_CONF_FILE' -out ''_default_sgnfile' -infiles ''_default_csrfile'"
$ WRITE OFILE "''_pem_pass_phrase'"
$ WRITE OFILE "y"
$ WRITE OFILE "y"
$ WRITE OFILE "$ SET MESSAGE /FACILITY /IDENTIFICATION /SEVERITY /TEXT"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_CA_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.RND;*
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_CA_'PID'.LOG /OUT=SYS$LOGIN:SSL_CA_'PID'.ERR "error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_CA_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_CA_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_CA_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.ERR;*
$ ENDIF
$!
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.LOG;*
$!
$ IF F$EDIT (_display_certificate,"TRIM,UPCASE") .EQS. "Y"
$ THEN
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Generating Output ...", NORM, CEOL
$!
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_X509_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL x509 -noout -text -in ''_default_sgnfile'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_X509_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_X509_'PID'.LOG /OUT=SYS$LOGIN:SSL_X509_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_X509_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''_default_sgnfile' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$!
$ TEXT = "Press return to continue"
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$ PROMPT = ESC + "[''MSG_ROW';''COL'H''TEXT'"
$ ASK "''PROMPT'" OPT
$!
$GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Set the User Data
$!------------------------------------------------------------------------------
$!
$SET_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. ""
$ THEN
$ SSL_USER_DATA_MAX == 1
$ ELSE
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX + 1
$ ENDIF
$!
$ SSL_USER_DATA_'SSL_USER_DATA_MAX' == "''P1'"
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Find the Request Data
$!------------------------------------------------------------------------------
$!
$GET_USER_DATA: SUBROUTINE
$!
$ CTR = 1
$ USER_KEY = F$ELEMENT (0,"#",P1)
$ USER_ITM = F$ELEMENT (1,"#",P1)
$!
$GET_USER_DATA_LOOP:
$!
$ IF CTR .LE. SSL_USER_DATA_MAX
$ THEN
$ KEY = F$ELEMENT (0,"#",SSL_USER_DATA_'CTR') ! Key Name
$ ITM = F$ELEMENT (1,"#",SSL_USER_DATA_'CTR') ! Item Name
$ VAL = F$ELEMENT (2,"#",SSL_USER_DATA_'CTR') ! Item Value Contains Default or Prompt
$ DEF = F$ELEMENT (3,"#",SSL_USER_DATA_'CTR') ! Default Value
$ PRM = F$ELEMENT (4,"#",SSL_USER_DATA_'CTR') ! Prompt Value
$ IF USER_KEY .NES. KEY .OR. USER_ITM .NES. ITM
$ THEN
$ CTR = CTR + 1
$ GOTO GET_USER_DATA_LOOP
$ ENDIF
$ IF VAL .EQS. "-" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "D" THEN SSL_USER_DATA == "''DEF'"
$ IF VAL .EQS. "P" THEN SSL_USER_DATA == "''PRM'"
$ ENDIF
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Delete the User Data
$!------------------------------------------------------------------------------
$!
$DEL_USER_DATA: SUBROUTINE
$!
$ IF F$TYPE (SSL_USER_DATA_MAX) .EQS. "" THEN GOTO DEL_USER_DATA_END
$!
$DEL_USER_DATA_LOOP:
$!
$ IF F$TYPE (SSL_USER_DATA_'SSL_USER_DATA_MAX') .NES. ""
$ THEN
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_'SSL_USER_DATA_MAX'
$ SSL_USER_DATA_MAX == SSL_USER_DATA_MAX - 1
$ GOTO DEL_USER_DATA_LOOP
$ ENDIF
$!
$ DELETE /SYMBOL /GLOBAL SSL_USER_DATA_MAX
$!
$DEL_USER_DATA_END:
$!
$ IF F$TYPE (SSL_USER_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_USER_DATA
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Display the invalid entry
$!------------------------------------------------------------------------------
$!
$INVALID_ENTRY: SUBROUTINE
$!
$ SAY ESC + "[''MSG_ROW';01H", BELL, " Invalid Entry, Try again ...''CEOL'"
$ Wait 00:00:01.5
$ SAY ESC + "[''MSG_ROW';01H", CEOL
$!
$ EXIT
$!
$ ENDSUBROUTINE
$!
$!------------------------------------------------------------------------------
$! Exit the procedure
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ DEASSIGN SYS$OUTPUT
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ DEASSIGN SYS$ERROR
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ DEL_USER_DATA
$!
$ IF F$TYPE (SSL_CONF_DATA) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_CONF_DATA
$!
$ IF F$GETDVI ("TT:","TT_NOECHO") .AND. .NOT. TT_NOECHO THEN SET TERMINAL /ECHO
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_CA_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_CA_'PID'.%%%;*
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.%%%;*
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -0,0 +1,245 @@
$!
$!------------------------------------------------------------------------------
$! SSL$VIEW_CERT.COM - SSL View Certificate procedure
$!------------------------------------------------------------------------------
$!
$ Verify = F$VERIFY (0)
$ Set NoOn
$ Set NoControl=Y
$!
$!------------------------------------------------------------------------------
$! Description
$!------------------------------------------------------------------------------
$!
$! This procedure prompts the user through creating a Server Certificate.
$!
$! The parameters used are:
$!
$! P1 - Certificate or Certificate Request (i.e. "CRT" or "CSR")
$!
$!------------------------------------------------------------------------------
$! Define symbols
$!------------------------------------------------------------------------------
$!
$ DELETE := DELETE
$ SAY := WRITE SYS$OUTPUT
$ ASK := READ SYS$COMMAND /END_OF_FILE=EXIT /PROMPT=
$ PID = F$GETJPI ("","PID")
$ TT_NOECHO = F$GETDVI ("TT:","TT_NOECHO")
$ On Control_Y THEN GOTO EXIT
$ Set Control=Y
$!
$ TT_ROWS = F$GETDVI ("TT:","TT_PAGE")
$ TT_COLS = F$GETDVI ("TT:","DEVBUFSIZ")
$!
$ INIT_TERM := @SSL$COM:SSL$INIT_TERM
$ PICK_FILE := @SSL$COM:SSL$PICK_FILE
$ SHOW_FILE := @SSL$COM:SSL$SHOW_FILE
$!
$ ESC[0,8] = 27 ! Set the Escape Character
$ BELL[0,8] = 7 ! Ring the terminal Bell
$ RED = 1 ! Color - Red
$ FGD = 30 ! Foreground
$ BGD = 0 ! Background
$ CSCR = ESC + "[2J" ! Clear the Screen
$ CEOS = ESC + "[0J" ! Clear to the End of the Screen
$ CEOL = ESC + "[0K" ! Clear to the End of the Line
$ NORM = ESC + "[0m" ! Turn Attributes off
$ BLNK = ESC + "[5m" ! Turn on BLINK Attribute
$ WIDE = ESC + "#6" ! Turn on WIDE Attribute
$!
$!------------------------------------------------------------------------------
$! Run the SSL setup if it hasn't been run yet
$!------------------------------------------------------------------------------
$!
$ IF F$TRNLNM ("SSL$ROOT") .EQS. ""
$ THEN
$ IF F$SEARCH ("SSL$COM:SSL$INIT_ENV.COM") .NES. ""
$ THEN
$ @SSL$COM:SSL$INIT_ENV.COM
$ ELSE
$ SAY BELL, "Unable to locate SSL$COM:SSL$INIT_ENV.COM ..."
$ GOTO EXIT
$ ENDIF
$ ENDIF
$!
$!------------------------------------------------------------------------------
$! Display the Page Header
$!------------------------------------------------------------------------------
$!
$ INIT_TERM
$ BCOLOR = BGD
$ FCOLOR = FGD + RED
$ COLOR = ESC + "[''BCOLOR';''FCOLOR'm"
$!
$ TEXT = "SSL Certificate Tool"
$ COL = (TT_COLS - (F$LENGTH (TEXT) * 2)) / 4
$!
$ SAY ESC + "[01;01H", CSCR
$ SAY ESC + "[02;''COL'H", COLOR, WIDE, TEXT, NORM
$!
$ IF P1 .EQS. "CSR"
$ THEN
$ TEXT = "View Certificate Request"
$ ELSE
$ TEXT = "View Certificate"
$ ENDIF
$ COL = (TT_COLS - F$LENGTH (TEXT)) / 2
$!
$ SAY ESC + "[04;01H"
$ SAY ESC + "[04;''COL'H", COLOR, TEXT, NORM
$!
$ CTR = 1
$ ROW = 6
$ COL = 2
$ TOP_ROW = ROW
$ MSG_ROW = TT_ROWS - 1
$!
$!------------------------------------------------------------------------------
$! Initialize the Request Data
$!------------------------------------------------------------------------------
$!
$ IF P1 .NES. "CRT" .AND. P1 .NES. "CSR"
$ THEN
$ PRM = "Display File:"
$ DEF = "*.*"
$ ENDIF
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ PRM = "Display Certificate File:"
$ DEF = "SSL$CRT:*.CRT"
$ ENDIF
$!
$ IF P1 .EQS. "CSR"
$ THEN
$ PRM = "Display Certificate Request File:"
$ DEF = "SSL$CSR:*.CSR"
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H", CEOS
$!
$!------------------------------------------------------------------------------
$! Confirm/Update the SSL Configuration Data
$!------------------------------------------------------------------------------
$!
$PROMPT_LOOP:
$!
$ PROMPT = ESC + "[''ROW';''COL'H''PRM' ? [''DEF'] ''CEOL'"
$ ASK "''PROMPT'" _view_file_name
$ _view_file_name = F$EDIT (_view_file_name,"TRIM")
$ IF _view_file_name .EQS. "" THEN _view_file_name = DEF
$!
$ X1 = 2
$ Y1 = TOP_ROW
$ X2 = TT_COLS - 2
$ Y2 = MSG_ROW - 1
$!
$PICK_FILE:
$!
$ PICK_FILE "''_view_file_name'" 'X1' 'Y1' 'X2' 'Y2' "< Select a File >"
$!
$ SAY ESC + "[''TOP_ROW';01H", CEOS
$!
$ IF SSL_FILE_NAME .EQS. "" THEN GOTO EXIT
$!
$!------------------------------------------------------------------------------
$! Create the Certificiate Authority
$!------------------------------------------------------------------------------
$!
$ SAY ESC + "[''MSG_ROW';01H", BLNK, " Generating Output ...", NORM, CEOL
$!
$ IF P1 .EQS. "CRT"
$ THEN
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_X509_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_X509_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL x509 -noout -text -in ''SSL_FILE_NAME'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_X509_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_X509_'PID'.LOG /OUT=SYS$LOGIN:SSL_X509_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_X509_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_X509_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''SSL_FILE_NAME' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.LOG;*
$ GOTO PICK_FILE
$ ENDIF
$!
$ IF P1 .EQS. "CSR"
$ THEN
$ OPEN /WRITE OFILE SYS$LOGIN:SSL_REQ_'PID'.COM
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$ERROR SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$OUTPUT SYS$LOGIN:SSL_REQ_''PID'.LOG"
$ WRITE OFILE "$ DEFINE /USER /NOLOG SYS$COMMAND SYS$INPUT"
$ WRITE OFILE "$ OPENSSL req -noout -text -in ''SSL_FILE_NAME'"
$ CLOSE OFILE
$!
$ @SYS$LOGIN:SSL_REQ_'PID'.COM
$!
$ DELETE/NOLOG/NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.COM;*
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ SEARCH SYS$LOGIN:SSL_REQ_'PID'.LOG /OUT=SYS$LOGIN:SSL_REQ_'PID'.ERR ":error:"
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.ERR") .NES. ""
$ THEN
$ IF F$FILE_ATTRIBUTE ("SYS$LOGIN:SSL_REQ_''PID'.ERR","ALQ") .NE. 0
$ THEN
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ SAY ESC + "[''MSG_ROW';01H''BELL'''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ERROR >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO EXIT
$ ENDIF
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.ERR;*
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "SYS$LOGIN:SSL_REQ_''PID'.LOG" 'X1' 'Y1' 'X2' 'Y2' "< ''SSL_FILE_NAME' >"
$ DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.LOG;*
$ GOTO PICK_FILE
$ ENDIF
$!
$ SAY ESC + "[''MSG_ROW';01H''CEOS'"
$ SHOW_FILE "''SYS$LOGIN:SSL_FILE_NAME'" 'X1' 'Y1' 'X2' 'Y2' "< ''SSL_FILE_NAME' >"
$ GOTO PICK_FILE
$!
$!------------------------------------------------------------------------------
$! Exit the procedure
$!------------------------------------------------------------------------------
$!
$EXIT:
$!
$ DEFINE /USER /NOLOG SYS$ERROR NL:
$ DEFINE /USER /NOLOG SYS$OUTPUT NL:
$ CLOSE OFILE
$!
$ IF F$TYPE (SSL_FILE_NAME) .NES. "" THEN DELETE /SYMBOL /GLOBAL SSL_FILE_NAME
$!
$ IF F$GETDVI ("TT:","TT_NOECHO") .AND. .NOT. TT_NOECHO THEN SET TERMINAL /ECHO
$!
$ IF F$SEARCH ("SYS$LOGIN:SSL_REQ_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_REQ_'PID'.%%%;*
$ IF F$SEARCH ("SYS$LOGIN:SSL_X509_''PID'.%%%;*") .NES. "" THEN DELETE /NOLOG /NOCONFIRM SYS$LOGIN:SSL_X509_'PID'.%%%;*
$!
$ Verify = F$VERIFY (Verify)
$!
$ EXIT

View File

@@ -26,47 +26,129 @@ $ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
$ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS]
$ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE]
$ DEFINE/NOLOG WRK_SSLCOM WRK_SSLROOT:[COM]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLINCLUDE:
$ IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[VMS]
$! IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN -
$! CREATE/DIR/LOG WRK_SSLROOT:[VMS]
$ IF F$PARSE("WRK_SSLCOM:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[COM]
$
$ IF F$SEARCH("WRK_SSLINCLUDE:vms_idhacks.h") .NES. "" THEN -
DELETE WRK_SSLINCLUDE:vms_idhacks.h;*
$
$ OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created."
$ WRITE SF "$! Startup file for Openssl 0.9.2-RL 15-Mar-1999"
$ OPEN/WRITE SF WRK_SSLCOM:SSL$STARTUP.COM
$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLCOM:SSL$STARTUP.COM")," created."
$ WRITE SF "$! Startup file for SSL 0.9.2-RL 15-Mar-1999"
$ WRITE SF "$!"
$ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
$ WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
$ WRITE SF "$! Instead, add or change SSL$COM:SSL$SYSTARTUP.COM"
$ WRITE SF "$!"
$ WRITE SF "$! P1 a qualifier to DEFINE. For example ""/SYSTEM"" to get the logical names"
$ WRITE SF "$! defined in the system logical name table."
$ WRITE SF "$!"
$ WRITE SF "$ ARCH = ""VAX"""
$ WRITE SF "$ IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA"""
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLROOT ",ROOT,".] /TRANS=CONC"
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLLIB SSLROOT:['ARCH'_LIB]"
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLINCLUDE SSLROOT:[INCLUDE]"
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLEXE SSLROOT:['ARCH'_EXE]"
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLCERTS SSLROOT:[CERTS]"
$ WRITE SF "$ DEFINE/NOLOG'P1 SSLPRIVATE SSLROOT:[PRIVATE]"
$ WRITE SF "$!"
$ WRITE SF "$ IF F$SEARCH(""SYS$STARTUP:SSL$DEFINE_ROOT.COM"") .NES."""" THEN -"
$ WRITE SF "$ @SYS$STARTUP:SSL$DEFINE_ROOT.COM"
$ WRITE SF "$!"
$ WRITE SF "$!"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$CERTS SSL$ROOT:[CERTS]"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$COM SSL$ROOT:[COM]"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$EXE SSL$ROOT:['ARCH'_EXE]"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$INCLUDE SSL$ROOT:[INCLUDE]"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$KEY SSL$ROOT:[CERTS]"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC SSL$PRIVATE SSL$ROOT:[PRIVATE]"
$ WRITE SF "$"
$ WRITE SF "$! This is program can include <openssl/{foo}.h>"
$ WRITE SF "$ DEFINE/NOLOG'P1 OPENSSL SSLINCLUDE:"
$ WRITE SF "$"
$ WRITE SF "$ IF F$SEARCH(""SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"") .NES."""" THEN -"
$ WRITE SF " @SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
$ WRITE SF "$ DEFINE/NOLOG/SYSTEM/EXEC OPENSSL SSL$INCLUDE:"
$ WRITE SF "$!"
$ WRITE SF "$ IF F$SEARCH(""SSL$COM:SSL$SYSTARTUP.COM"") .NES."""" THEN -"
$ WRITE SF " @SSL$COM:SSL$SYSTARTUP.COM"
$ WRITE SF "$"
$ WRITE SF "$ EXIT"
$ CLOSE SF
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
$
$ COPY OPENSSL_UTILS.COM WRK_SSLROOT:[VMS]/LOG
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[VMS]OPENSSL_UTILS.COM
$
$ SET FILE/PROT=WORLD:RE WRK_SSLCOM:SSL$STARTUP.COM
$!
$ OPEN/WRITE SF WRK_SSLCOM:SSL$SHUTDOWN.COM
$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLCOM:SSL$SHUTDOWN.COM")," created."
$ WRITE SF "$! Shutdown file for SSL"
$ WRITE SF "$!"
$ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
$ WRITE SF "$!"
$ WRITE SF "$ ARCH = ""VAX"""
$ WRITE SF "$ IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA"""
$ WRITE SF "$!"
$ WRITE SF "$ IF F$SEARCH(""SSL$COM:SSL$SYSHUTDOWN.COM"") .NES."""" THEN -"
$ WRITE SF " @SSL$COM:SSL$SYSHUTDOWN.COM"
$ WRITE SF "$!"
$ WRITE SF "$ IF F$TRNLNM(""SSL$CERTS"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$CERTS"
$!
$ WRITE SF "$ IF F$TRNLNM(""SSL$COM"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$COM"
$!
$ WRITE SF "$ IF F$TRNLNM(""SSL$EXE"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$EXE"
$!
$ WRITE SF "$ IF F$TRNLNM(""SSL$INCLUDE"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$INCLUDE"
$!
$ WRITE SF "$ IF F$TRNLNM(""SSL$KEY"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$KEY"
$!
$ WRITE SF "$ IF F$TRNLNM(""SSL$PRIVATE"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$PRIVATE"
$!
$ WRITE SF "$!"
$ WRITE SF "$ IF F$TRNLNM(""OPENSSL"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC OPENSSL"
$ WRITE SF "$!"
$ WRITE SF "$ IF F$TRNLNM(""SSL$ROOT"") .NES."""" THEN -"
$ WRITE SF " DEASSIGN/SYSTEM/EXEC SSL$ROOT"
$ WRITE SF "$!"
$ WRITE SF "$ EXIT"
$ CLOSE SF
$ SET FILE/PROT=WORLD:RE WRK_SSLCOM:SSL$SHUTDOWN.COM
$!
$ COPY SSL$UTILS.COM WRK_SSLCOM:/LOG
$ SET FILE/PROT=WORLD:RE WRK_SSLCOM:SSL$UTILS.COM
$!
$ COPY SSL$SYSTARTUP.COM WRK_SSLCOM:/LOG
$ SET FILE/PROT=WORLD:RE WRK_SSLCOM:SSL$SYSTARTUP.COM
$ COPY SSL$SYSHUTDOWN.COM WRK_SSLCOM:/LOG
$ SET FILE/PROT=WORLD:RE WRK_SSLCOM:SSL$SYSHUTDOWN.COM
$!
$ CERT_DIR := [.CERT_TOOL]
$ CERT_FILES := SSL$AUTH_CERT.COM,SSL$AUTO_CERT.COM,SSL$CERT_TOOL.COM, -
SSL$CONF_UTIL.COM,SSL$DRAW_BOX.COM,SSL$EXIT_CMD.TPU, -
SSL$FILL_BOX.COM,SSL$HASH_CERT.COM,SSL$HOSTADDR.EXE, -
SSL$HOSTNAME.EXE,SSL$INIT_ENV.COM,SSL$INIT_TERM.COM, -
SSL$PICK_FILE.COM,SSL$RQST_CERT.COM,SSL$SELF_CERT.COM, -
SSL$SHOW_FILE.COM,SSL$SIGN_CERT.COM,SSL$VIEW_CERT.COM, -
SSL$REM_ENV.COM
$!
$ I = 0
$ LOOP:
$ CF = F$EDIT(F$ELEMENT(I, ",", CERT_FILES),"TRIM")
$ I = I + 1
$ IF CF .EQS. "," THEN GOTO LOOP_END
$ SET NOON
$ IF F$SEARCH(CERT_DIR+CF) .NES. ""
$ THEN
$ COPY 'CERT_DIR''CF' WRK_SSLCOM:*.*/log
$ SET FILE/PROT=W:RE WRK_SSLCOM:'CF'
$ ENDIF
$ SET ON
$ GOTO LOOP
$ LOOP_END:
$!
$ SHOW SYSTEM/FULL/OUTPUT=WRK_SSLROOT:[PRIVATE]RANDFILE.
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[PRIVATE]RANDFILE.
$!
$ COPY SSL010.RELEASE_NOTES WRK_SSLROOT:[000000]/LOG
$ SET FILE/PROT=WORLD:RE WRK_SSLROOT:[000000]SSL010.RELEASE_NOTES
$!
$ EXIT

View File

@@ -3,16 +3,94 @@ $!
$! No command line parameters. This should be run at the start of the source
$! tree (the same directory where one finds INSTALL.VMS).
$!
$! Input: [.UTIL]LIBEAY.NUM,[.AXP.EXE.CRYPTO]LIBCRYPTO.OLB
$! [.UTIL]SSLEAY.NUM,[.AXP.EXE.SSL]LIBSSL.OLB
$! Output: [.AXP.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
$! [.AXP.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
$! Input: [.UTIL]LIBEAY.NUM,[.AXP.EXE.CRYPTO]LIBCRYPTO.OLB
$! [.UTIL]SSLEAY.NUM,[.AXP.EXE.SSL]LIBSSL.OLB
$! Output: [.AXP.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
$! [.AXP.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
$!
$! So far, tests have only been made on VMS for Alpha. VAX will come in time.
$!
$!
$! >>>>>
$! Note: Since I don't know how to put a comment into one of the .NUM
$! files, I will put the comment here and hope that it is found.
$!
$! For SSLEAY.NUM, we do not expose SSL_add_dir_cert_subjs_to_stk.
$! We do not expose it because it is a truncated VMS name that
$! points to (via SYMHACKS.H) SSL_add_dir_cert_subjects_to_stack.
$! However, SSL_add_dir_cert_subjects_to_stack is #ifndef VMS
$! out of SSL_CERT.C. So, comment them all out and we won't get
$! any link errors about undefined symbols. This all works fine
$! until we need this API's functionality.
$!
$! For LIBEAY.NUM,
$! ASN1_UTCTIME_GET #if 0 [.CRYPTO.ASN1]A_UTCTM.C
$! [.CRYPTO.ASN1]ASN1.H
$!
$! DES_SET_WEAK_KEY_FLAG [.CRYPTO.DES]DES.H
$! Not used in any .C file.
$!
$! DH_GET_DEFAULT_METHOD Not found in any .C or .H file.
$! DH_SET_DEFAULT_METHOD Not found in any .C or .H file.
$! DSA_GET_DEFAULT_METHOD Not found in any .C or .H file.
$! DSA_SET_DEFAULT_METHOD Not found in any .C or .H file.
$!
$! PEM_READ_BIO_NETSCAPE_CERT_SEQUENCE [.CRYPTO.PEM]PEM.H
$! [.CRYPTO]SYMHACKS.H
$! PEM_read_bio_NS_CERT_SEQ is not in any .C or .H file.
$!
$! PEM_READ_BIO_PKCS8_PRIV_KEY_INFO [.CRYPTO]SYMHACKS.H
$! #define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO
$! PEM_read_bio_P8_PRIV_KEY_INFO is not in any .C or .H file.
$!
$! PEM_READ_NETSCAPE_CERT_SEQUENCE [.CRYPTO.PEM]PEM.H
$! [.CRYPTO]SYMHACKS.H
$! #define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ
$! PEM_read_NS_CERT_SEQ is not in any .C or .H file.
$!
$! PEM_READ_PKCS8_PRIV_KEY_INFO [.CRYPTO]SYMHACKS.H
$! #define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO
$! PEM_read_P8_PRIV_KEY_INFO is not in any .C or .H file.
$!
$! PEM_WRITE_BIO_NETSCAPE_CERT_SEQUENCE [.CRYPTO.PEM]PEM.H
$! [.CRYPTO]SYMHACKS.H
$! #define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ
$! PEM_write_bio_NS_CERT_SEQ is not in any .C or .H file.
$!
$! PEM_WRITE_BIO_PKCS8_PRIV_KEY_INFO [.CRYPTO]SYMHACKS.H
$! #define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO
$! PEM_write_bio_P8_PRIV_KEY_INFO is not in any .C or .H file.
$!
$! PEM_WRITE_NETSCAPE_CERT_SEQUENCE [.CRYPTO.PEM]PEM.H
$! [.CRYPTO]SYMHACKS.H
$! #define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ
$! PEM_write_NS_CERT_SEQ is not in any .C or .H file.
$!
$! PEM_WRITE_PKCS8_PRIV_KEY_INFO [.CRYPTO]SYMHACKS.H
$! #define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO
$! PEM_write_P8_PRIV_KEY_INFO is not in any .C or .H file.
$!
$! RAND_EVENT [.CRYPTO.RAND]RAND.H RAND_event is #if windows || Win32
$! [.CRYPTO.RAND]RAND_WIN.C
$! All modules in RAND_WIN are WINDOWS or WIN32 modules.
$!
$! RAND_SCREEN if Windows or Win32 - [.CRYPTO.RAND]RAND.H
$!
$! RSA_GET_DEFAULT_METHOD is not in any .C or .H file.
$!
$! RSA_SET_DEFAULT_METHOD is not in any .C or .H file.
$!
$!
$!
$! ===========================================================================
$
$!
$! Setup VMS specific information.
$!
$ @vms_build_info
$!
$! ----- Prepare info for processing: version number and file info
$ gosub read_version_info
$!
$ if libver .eqs. ""
$ then
$ write sys$error "ERROR: Couldn't find any library version info..."
@@ -24,20 +102,31 @@ $ then
$ libid = "Crypto"
$ libnum = "[.UTIL]LIBEAY.NUM"
$ libdir = "[.AXP.EXE.CRYPTO]"
$ libolb = "''libdir'LIBCRYPTO.OLB"
$ libolb = "''libdir'LIBCRYPTO''build_bits'.OLB"
$ libopt = "''libdir'LIBCRYPTO.OPT"
$ libmap = "''libdir'LIBCRYPTO.MAP"
$ libgoal= "''libdir'LIBCRYPTO.EXE"
$ if build_bits .eqs. "32"
$ then
$ libgoal= "''libdir'SSL$LIBCRYPTO_SHR''build_bits'.EXE"
$ else
$ libgoal= "''libdir'SSL$LIBCRYPTO_SHR.EXE"
$ endif
$ libref = ""
$ gosub create_axp_shr
$ libid = "SSL"
$ libnum = "[.UTIL]SSLEAY.NUM"
$ libdir = "[.AXP.EXE.SSL]"
$ libolb = "''libdir'LIBSSL.OLB"
$ libolb = "''libdir'LIBSSL''build_bits'.OLB"
$ libopt = "''libdir'LIBSSL.OPT"
$ libmap = "''libdir'LIBSSL.MAP"
$ libgoal= "''libdir'LIBSSL.EXE"
$ libref = "[.AXP.EXE.CRYPTO]LIBCRYPTO.EXE"
$ if build_bits .eqs. "32"
$ then
$ libgoal= "''libdir'SSL$LIBSSL_SHR''build_bits'.EXE"
$ libref = "[.AXP.EXE.CRYPTO]SSL$LIBCRYPTO_SHR''build_bits'.EXE"
$ else
$ libgoal= "''libdir'SSL$LIBSSL_SHR.EXE"
$ libref = "[.AXP.EXE.CRYPTO]SSL$LIBCRYPTO_SHR.EXE"
$ endif
$ gosub create_axp_shr
$ else
$ libtit = "CRYPTO_TRANSFER_VECTOR"
@@ -45,11 +134,16 @@ $ libid = "Crypto"
$ libnum = "[.UTIL]LIBEAY.NUM"
$ libdir = "[.VAX.EXE.CRYPTO]"
$ libmar = "''libdir'LIBCRYPTO.MAR"
$ libolb = "''libdir'LIBCRYPTO.OLB"
$ libolb = "''libdir'LIBCRYPTO''build_bits.OLB"
$ libopt = "''libdir'LIBCRYPTO.OPT"
$ libobj = "''libdir'LIBCRYPTO.OBJ"
$ libmap = "''libdir'LIBCRYPTO.MAP"
$ libgoal= "''libdir'LIBCRYPTO.EXE"
$ if build_bits .eqs. "32"
$ then
$ libgoal= "''libdir'SSL$LIBCRYPTO_SHR''build_bits'.EXE"
$ else
$ libgoal= "''libdir'SSL$LIBCRYPTO_SHR.EXE"
$ endif
$ libref = ""
$ libvec = "LIBCRYPTO"
$ gosub create_vax_shr
@@ -58,12 +152,18 @@ $ libid = "SSL"
$ libnum = "[.UTIL]SSLEAY.NUM"
$ libdir = "[.VAX.EXE.SSL]"
$ libmar = "''libdir'LIBSSL.MAR"
$ libolb = "''libdir'LIBSSL.OLB"
$ libolb = "''libdir'LIBSSL''build_bits'.OLB"
$ libopt = "''libdir'LIBSSL.OPT"
$ libobj = "''libdir'LIBSSL.OBJ"
$ libmap = "''libdir'LIBSSL.MAP"
$ libgoal= "''libdir'LIBSSL.EXE"
$ libref = "[.VAX.EXE.CRYPTO]LIBCRYPTO.EXE"
$ if build_bits .eqs. "32"
$ then
$ libgoal= "''libdir'SSL$LIBSSL_SHR''build_bits'.EXE"
$ libref = "[.VAX.EXE.CRYPTO]SSL$LIBCRYPTO_SHR''build_bits'.EXE"
$ else
$ libgoal= "''libdir'SSL$LIBSSL_SHR.EXE"
$ libref = "[.VAX.EXE.CRYPTO]SSL$LIBCRYPTO_SHR.EXE"
$ endif
$ libvec = "LIBSSL"
$ gosub create_vax_shr
$ endif
@@ -83,18 +183,18 @@ $! in the .num file, check that each line applies to VMS and the architecture,
$! and to fill in "holes" with dummy entries.
$!
$! The creator routines depend on the following variables:
$! libnum The name of the .num file to use as input
$! libolb The name of the object library to build from
$! libid The identification string of the shareable library
$! libopt The name of the .opt file to write
$! libtit The title of the assembler transfer vector file (VAX only)
$! libmar The name of the assembler transfer vector file (VAX only)
$! libmap The name of the map file to write
$! libgoal The name of the shareable library to write
$! libref The name of a shareable library to link in
$! libnum The name of the .num file to use as input
$! libolb The name of the object library to build from
$! libid The identification string of the shareable library
$! libopt The name of the .opt file to write
$! libtit The title of the assembler transfer vector file (VAX only)
$! libmar The name of the assembler transfer vector file (VAX only)
$! libmap The name of the map file to write
$! libgoal The name of the shareable library to write
$! libref The name of a shareable library to link in
$!
$! read_func_num depends on the following variables from the creator:
$! libwriter The name of the writer routine to call for each .num file line
$! libwriter The name of the writer routine to call for each .num file line
$! -----
$
$! ----- Subroutines for AXP
@@ -103,6 +203,7 @@ $! The creator routine
$ create_axp_shr:
$ open/write opt 'libopt'
$ write opt "identification=""",libid," ",libverstr,""""
$ write opt "build_ident=""",build_ident,"_",build_platform,"_",build_bits,""" "
$ write opt libolb,"/lib"
$ if libref .nes. "" then write opt libref,"/SHARE"
$ write opt "SYMBOL_VECTOR=(-"
@@ -137,14 +238,16 @@ $ endif
$ if libfirstentry
$ then
$ write 'libwrch' " ",libentry,"=",pr," -"
$!DEBUG!$ write sys$output "''libentry' = ''pr' #1"
$ else
$ write 'libwrch' " ,",libentry,"=",pr," -"
$!DEBUG!$ write sys$output ",''libentry' = ''pr'"
$ endif
$ libfirstentry := false
$ textcount = textcount + textcount_this
$ return
$
$! ----- Subroutines for AXP
$! ----- Subroutines for VAX
$! -----
$! The creator routine
$ create_vax_shr:
@@ -153,23 +256,23 @@ $ type sys$input:/out=mar:
;
; Transfer vector for VAX shareable image
;
$ write mar " .TITLE ",libtit
$ write mar " .IDENT /",libid,"/"
$ write mar " .TITLE ",libtit
$ write mar " .IDENT /",libid,"/"
$ type sys$input:/out=mar:
;
; Define macro to assist in building transfer vector entries. Each entry
; should take no more than 8 bytes.
;
.MACRO FTRANSFER_ENTRY routine
.ALIGN QUAD
.TRANSFER routine
.MASK routine
JMP routine+2
.ENDM FTRANSFER_ENTRY
.MACRO FTRANSFER_ENTRY routine
.ALIGN QUAD
.TRANSFER routine
.MASK routine
JMP routine+2
.ENDM TRANSFER_ENTRY
;
; Place entries in own program section.
;
$ write mar " .PSECT $$",libvec,",QUAD,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT"
$ write mar " .PSECT $$",libvec,"QUAD,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT"
$ write mar libvec,"_xfer:"
$ libwrch := mar
$ libwriter := write_vax_ftransfer_entry
@@ -178,10 +281,10 @@ $ type sys$input:/out=mar:
;
; Allocate extra storage at end of vector to allow for expansion.
;
$ write mar " .BLKB 32768-<.-",libvec,"_xfer> ; 64 pages total."
$! libwriter := write_vax_vtransfer_entry
$! gosub read_func_num
$ write mar " .END"
$ write mar " .BLKB 32768-<.-",libvec,"_xfer> ; 64 pages total."
$ libwriter := write_vax_vtransfer_entry
$ gosub read_func_num
$ write mar " .END"
$ close mar
$ open/write opt 'libopt'
$ write opt "identification=""",libid," ",libverstr,""""
@@ -202,7 +305,7 @@ $ type sys$input:/out=opt:
PSECT_ATTR=$CHAR_STRING_CONSTANTS,NOWRT
$ libwrch := opt
$ libwriter := write_vax_psect_attr
$ gosub read_func_num
$ gosub read_var_num
$ close opt
$ macro/obj='libobj' 'libmar'
$ link/map='libmap'/full/share='libgoal' 'libopt'/option
@@ -213,9 +316,9 @@ $ write_vax_ftransfer_entry:
$ if info_kind .nes. "FUNCTION" then return
$ if libentry .eqs ".dummy"
$ then
$ write 'libwrch' " .BLKB 8" ! Dummy is zeroes...
$ write 'libwrch' " .BLKB 8" ! Dummy is zeroes...
$ else
$ write 'libwrch' " FTRANSFER_ENTRY ",libentry
$ write 'libwrch' " FTRANSFER_ENTRY ",libentry
$ endif
$ return
$! The record writer routine for VAX variables (should never happen!)
@@ -245,6 +348,16 @@ $ info_exist=f$element(0,":",entryinfo)
$ info_platforms=","+f$element(1,":",entryinfo)+","
$ info_kind=f$element(2,":",entryinfo)
$ info_algorithms=","+f$element(3,":",entryinfo)+","
$!
$!DEBUG!$ write sys$output " Processing ... ", line
$!DEBUG!$ write sys$output "Entry num = ",entrynum
$!DEBUG!$ write sys$output "Entry info = ",entryinfo
$!DEBUG!$ write sys$output "Cur Entry = ",curentry
$!DEBUG!$ write sys$output "info exist = ",info_exist
$!DEBUG!$ write sys$output "info platforms = ",info_platforms
$!DEBUG!$ write sys$output "info kind = ",info_kind
$!DEBUG!$ write sys$output "info algs = ",info_algorithms
$!
$ if info_exist .eqs. "NOEXIST" then goto loop
$ truesum = 0
$ falsesum = 0
@@ -252,10 +365,15 @@ $ negatives = 1
$ plat_i = 0
$ loop1:
$ plat_entry = f$element(plat_i,",",info_platforms)
$!DEBUG!$ write sys$output "plat entry = ",plat_entry
$!
$ plat_i = plat_i + 1
$!DEBUG!$ write sys$output "plat i = ", plat_i
$ if plat_entry .eqs. "" then goto loop1
$ if plat_entry .nes. ","
$ if plat_entry .eqs. ","
$ then
$ goto endloop1
$ else
$ if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0
$ if f$getsyi("CPU") .lt. 128
$ then
@@ -264,30 +382,48 @@ $ truesum = truesum + 1
$ if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then -
$ falsesum = falsesum + 1
$ endif
$ if plat_entry .eqs. "VMS" then truesum = truesum + 1
$ if plat_entry .eqs. "!VMS" then falsesum = falsesum + 1
$ goto loop1
$ if plat_entry .eqs. "VMS"
$ then
$ truesum = truesum + 1
$!DEBUG!$ write sys$output "plat_entry = VMS"
$ endif
$!
$ if plat_entry .eqs. "!VMS"
$ then
$ falsesum = falsesum + 1
$!DEBUG!$ write sys$output "plat_entry <> VMS"
$ endif
$ endif
$ goto loop1
$!
$ endloop1:
$!DEBUG!$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms
$!DEBUG!$ then
$!DEBUG!$ write sys$output line
$!DEBUG!$ write sys$output " truesum = ",truesum,-
$!DEBUG! ", negatives = ",negatives,", falsesum = ",falsesum
$!DEBUG! ", negatives = ",negatives,", falsesum = ",falsesum
$!DEBUG!$ endif
$ if falsesum .ne. 0 then goto loop
$ if truesum+negatives .eq. 0 then goto loop
$ if truesum+negatives .eq. 0
$ then
$!DEBUG!$ write sys$output "truesum+negatives .eq. 0. Going to loop."
$ goto loop
$ endif
$ alg_i = 0
$ loop2:
$ alg_entry = f$element(alg_i,",",info_algorithms)
$ alg_i = alg_i + 1
$!DEBUG!$ write sys$output "alg entry = ",alg_entry
$ alg_i = alg_i + 1
$ if alg_entry .eqs. "" then goto loop2
$ if alg_entry .nes. ","
$ if alg_entry .eqs. ","
$ then
$ goto endloop2
$ else
$ if alg_entry .eqs. "KRB5" then goto loop ! Special for now
$ if f$trnlnm("OPENSSL_NO_"+alg_entry) .nes. "" then goto loop
$ goto loop2
$ endif
$ goto loop2
$!
$ endloop2:
$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms
$ then
@@ -323,15 +459,16 @@ $ goto 'next'
$ loop_end:
$ close libnum
$ return
$
$!
$! The version number reader
$ read_version_info:
$!
$read_version_info:
$ libver = ""
$ open/read vf [.CRYPTO]OPENSSLV.H
$ loop_rvi:
$ read/err=endloop_rvi/end=endloop_rvi vf rvi_line
$ if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then -
goto loop_rvi
goto loop_rvi
$ libverstr = f$element(1,"""",rvi_line)
$ libvmajor = f$element(0,".",libverstr)
$ libvminor = f$element(1,".",libverstr)
@@ -339,7 +476,7 @@ $ libvedit = f$element(2,".",libverstr)
$ libvpatch = f$cvui(0,8,f$extract(1,1,libvedit)+"@")-f$cvui(0,8,"@")
$ libvedit = f$extract(0,1,libvedit)
$ libver = f$string(f$int(libvmajor)*100)+","+-
f$string(f$int(libvminor)*100+f$int(libvedit)*10+f$int(libvpatch))
f$string(f$int(libvminor)*100+f$int(libvedit)*10+f$int(libvpatch))
$ if libvmajor .eqs. "0"
$ then
$ libvmatch = "EQUAL"

8
VMS/ssl$syshutdown.com Normal file
View File

@@ -0,0 +1,8 @@
$!
$! SSL$SYSHUTDOWN.COM - This command procedure is used for site specific SSL
$! shutdown tasks. Anything setup in SSL$SYSTARTUP.COM
$! should be cleaned up in this command procedure.
$!
$ DEASSIGN/SYSTEM/EXEC RANDFILE
$ DEASSIGN/SYSTEM/EXEC SSL$RANDFILE
$!

7
VMS/ssl$systartup.com Normal file
View File

@@ -0,0 +1,7 @@
$!
$!
$! Add logical to aid random number generators. -- http://www.free.lp.se/openssl/docs/openssl3.html#ss3.1
$!
$ DEFINE/SYSTEM/EXEC RANDFILE SSL$ROOT:[PRIVATE]RANDFILE.;
$ DEFINE/SYSTEM/EXEC SSL$RANDFILE SSL$ROOT:[PRIVATE]RANDFILE.;
$!

76
VMS/ssl$utils.com Normal file
View File

@@ -0,0 +1,76 @@
$!
$! APPS.COM
$! Written By: Robert Byer
$! Vice-President
$! A-Com Computing, Inc.
$! byer@mail.all-net.net
$!
$!
$! Slightly modified by Richard Levitte <richard@levitte.org>
$!
$ IF P1 .NES. "" THEN GOTO 'P1
$!
$DEFINE:
$!
$ OPENSSL :== $SSL$EXE:OPENSSL
$ VERIFY :== $SSL$EXE:OPENSSL VERIFY
$ ASN1PARSE:== $SSL$EXE:OPENSSL ASN1PARS
$ REQ :== $SSL$EXE:OPENSSL REQ
$ DGST :== $SSL$EXE:OPENSSL DGST
$ DH :== $SSL$EXE:OPENSSL DH
$ ENC :== $SSL$EXE:OPENSSL ENC
$ GENDH :== $SSL$EXE:OPENSSL GENDH
$ ERRSTR :== $SSL$EXE:OPENSSL ERRSTR
$ CA :== $SSL$EXE:OPENSSL CA
$ CRL :== $SSL$EXE:OPENSSL CRL
$ RSA :== $SSL$EXE:OPENSSL RSA
$ DSA :== $SSL$EXE:OPENSSL DSA
$ DSAPARAM :== $SSL$EXE:OPENSSL DSAPARAM
$ X509 :== $SSL$EXE:OPENSSL X509
$ GENRSA :== $SSL$EXE:OPENSSL GENRSA
$ GENDSA :== $SSL$EXE:OPENSSL GENDSA
$ S_SERVER :== $SSL$EXE:OPENSSL S_SERVER
$ S_CLIENT :== $SSL$EXE:OPENSSL S_CLIENT
$ SPEED :== $SSL$EXE:OPENSSL SPEED
$ S_TIME :== $SSL$EXE:OPENSSL S_TIME
$ VERSION :== $SSL$EXE:OPENSSL VERSION
$ PKCS7 :== $SSL$EXE:OPENSSL PKCS7
$ CRL2PKCS7:== $SSL$EXE:OPENSSL CRL2P7
$ SESS_ID :== $SSL$EXE:OPENSSL SESS_ID
$ CIPHERS :== $SSL$EXE:OPENSSL CIPHERS
$ NSEQ :== $SSL$EXE:OPENSSL NSEQ
$ PKCS12 :== $SSL$EXE:OPENSSL PKCS12
$!
$EXIT
$!
$REMOVE:
$ DELETE/SYMBOL/GLOBAL OPENSSL
$ DELETE/SYMBOL/GLOBAL VERIFY
$ DELETE/SYMBOL/GLOBAL ASN1PARSE
$ DELETE/SYMBOL/GLOBAL REQ
$ DELETE/SYMBOL/GLOBAL DGST
$ DELETE/SYMBOL/GLOBAL DH
$ DELETE/SYMBOL/GLOBAL ENC
$ DELETE/SYMBOL/GLOBAL GENDH
$ DELETE/SYMBOL/GLOBAL ERRSTR
$ DELETE/SYMBOL/GLOBAL CA
$ DELETE/SYMBOL/GLOBAL CRL
$ DELETE/SYMBOL/GLOBAL RSA
$ DELETE/SYMBOL/GLOBAL DSA
$ DELETE/SYMBOL/GLOBAL DSAPARAM
$ DELETE/SYMBOL/GLOBAL X509
$ DELETE/SYMBOL/GLOBAL GENRSA
$ DELETE/SYMBOL/GLOBAL GENDSA
$ DELETE/SYMBOL/GLOBAL S_SERVER
$ DELETE/SYMBOL/GLOBAL S_CLIENT
$ DELETE/SYMBOL/GLOBAL SPEED
$ DELETE/SYMBOL/GLOBAL S_TIME
$ DELETE/SYMBOL/GLOBAL VERSION
$ DELETE/SYMBOL/GLOBAL PKCS7
$ DELETE/SYMBOL/GLOBAL CRL2PKCS7
$ DELETE/SYMBOL/GLOBAL SESS_ID
$ DELETE/SYMBOL/GLOBAL CIPHERS
$ DELETE/SYMBOL/GLOBAL NSEQ
$ DELETE/SYMBOL/GLOBAL PKCS12
$!
$EXIT

25
VMS/ssl010.release_notes Normal file
View File

@@ -0,0 +1,25 @@
Compaq SSL for OpenVMS Alpha
Field Test Release Notes
February 2002
Based on OpenSSL 0.9.6B
Compaq SSL T1.0 for OpenVMS Alpha
CPQ-AXPVMS-SSL-T0100--1.PCSI-DCX-AXPEXE
----------------------------------------------
Compaq is pleased to provide you with the first release of Compaq
SSL for OpenVMS Alpha. Compaq SSL (Secure Sockets Layer)
is based on the 0.9.6B release from the Open Group. See
http://www.openssl.org for more information about OpenSSL.
Documentation for this kit, including installation and configuration
information, release notes, a programming tutorial and API reference,
is included in "Open Source Security for OpenVMS Alpha
Volume 2: SSL" in HTML, PDF, and PostScript format. This document
is included on the OpenVMS field test documentation CD-ROM.

1
VMS/tcpip_shr_decc.opt Normal file
View File

@@ -0,0 +1 @@
sys$share:tcpip$ipc_shr.exe/share

File diff suppressed because it is too large Load Diff

View File

@@ -147,7 +147,7 @@ static UI_METHOD *ui_method = NULL;
static int set_table_opts(unsigned long *flags, const char *arg, const NAME_EX_TBL *in_tbl);
static int set_multi_opts(unsigned long *flags, const char *arg, const NAME_EX_TBL *in_tbl);
#ifndef OPENSSL_NO_RC4
#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
/* Looks like this stuff is worth moving into separate function */
static EVP_PKEY *
load_netscape_key(BIO *err, BIO *key, const char *file,
@@ -333,16 +333,13 @@ void program_name(char *in, char *out, int size)
#ifdef OPENSSL_SYS_WIN32
int WIN32_rename(char *from, char *to)
{
#ifdef OPENSSL_SYS_WINNT
int ret;
/* Note: MoveFileEx() doesn't work under Win95, Win98 */
ret=MoveFileEx(from,to,MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED);
return(ret?0:-1);
#else
unlink(to);
return MoveFile(from, to);
#endif
/* Windows rename gives an error if 'to' exists, so delete it
* first and ignore file not found errror
*/
if((remove(to) != 0) && (errno != ENOENT))
return -1;
#undef rename
return rename(from, to);
}
#endif
@@ -835,7 +832,7 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format,
pkey=PEM_read_bio_PrivateKey(key,NULL,
(pem_password_cb *)password_callback, &cb_data);
}
#ifndef OPENSSL_NO_RC4
#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
pkey = load_netscape_key(err, key, file, key_descrip, format);
#endif
@@ -904,7 +901,7 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format,
pkey=PEM_read_bio_PUBKEY(key,NULL,
(pem_password_cb *)password_callback, &cb_data);
}
#ifndef OPENSSL_NO_RC4
#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
pkey = load_netscape_key(err, key, file, key_descrip, format);
#endif
@@ -920,7 +917,7 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format,
return(pkey);
}
#ifndef OPENSSL_NO_RC4
#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_RSA)
EVP_PKEY *
load_netscape_key(BIO *err, BIO *key, const char *file,
const char *key_descrip, int format)
@@ -1314,3 +1311,21 @@ ENGINE *setup_engine(BIO *err, const char *engine, int debug)
}
return e;
}
int load_config(BIO *err, CONF *cnf)
{
if (!cnf)
cnf = config;
if (!cnf)
return 1;
OPENSSL_load_builtin_modules();
if (CONF_modules_load(cnf, NULL, 0) <= 0)
{
BIO_printf(err, "Error configuring OpenSSL\n");
ERR_print_errors(err);
return 0;
}
return 1;
}

View File

@@ -121,6 +121,7 @@
#include <openssl/lhash.h>
#include <openssl/conf.h>
#include <openssl/txt_db.h>
#include <openssl/engine.h>
#include <openssl/ossl_typ.h>
int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn);
@@ -194,9 +195,10 @@ extern BIO *bio_err;
setup_ui_method(); } while(0)
# endif
# define apps_shutdown() \
do { destroy_ui_method(); EVP_cleanup(); \
ENGINE_cleanup(); CRYPTO_cleanup_all_ex_data(); \
ERR_remove_state(0); ERR_free_strings(); } while(0)
do { CONF_modules_unload(1); destroy_ui_method(); \
EVP_cleanup(); ENGINE_cleanup(); \
CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \
ERR_free_strings(); } while(0)
#endif
typedef struct args_st
@@ -244,11 +246,15 @@ STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath);
ENGINE *setup_engine(BIO *err, const char *engine, int debug);
int load_config(BIO *err, CONF *cnf);
/* Functions defined in ca.c and also used in ocsp.c */
int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold,
ASN1_GENERALIZEDTIME **pinvtm, char *str);
int make_serial_index(TXT_DB *db);
X509_NAME *do_subject(char *str, long chtype);
#define FORMAT_UNDEF 0
#define FORMAT_ASN1 1
#define FORMAT_TEXT 2

View File

@@ -103,6 +103,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
prog=argv[0];
argc--;
argv++;

151
apps/ca.c
View File

@@ -238,7 +238,6 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
int verbose, X509_REQ *req, char *ext_sect, CONF *conf,
unsigned long certopt, unsigned long nameopt, int default_op,
int ext_copy);
static X509_NAME *do_subject(char *subject);
static int do_revoke(X509 *x509, TXT_DB *db, int ext, char *extval);
static int get_certificate_status(const char *ser_status, TXT_DB *db);
static int do_updatedb(TXT_DB *db);
@@ -571,6 +570,7 @@ bad:
#else
strncpy(buf[0],X509_get_default_cert_area(),
sizeof(buf[0])-2-sizeof(CONFIG_FILE));
buf[0][sizeof(buf[0])-2-sizeof(CONFIG_FILE)]='\0';
strcat(buf[0],"/");
#endif
strcat(buf[0],CONFIG_FILE);
@@ -590,6 +590,9 @@ bad:
goto err;
}
if (!load_config(bio_err, conf))
goto err;
/* Lets get the config section we are using */
if (section == NULL)
{
@@ -1274,6 +1277,7 @@ bad:
BIO_printf(bio_err,"Write out database with %d new entries\n",sk_X509_num(cert_sk));
strncpy(buf[0],serialfile,BSIZE-4);
buf[0][BSIZE-4]='\0';
#ifdef OPENSSL_SYS_VMS
strcat(buf[0],"-new");
@@ -1284,6 +1288,7 @@ bad:
if (!save_serial(buf[0],serial)) goto err;
strncpy(buf[1],dbfile,BSIZE-4);
buf[1][BSIZE-4]='\0';
#ifdef OPENSSL_SYS_VMS
strcat(buf[1],"-new");
@@ -1314,6 +1319,7 @@ bad:
p=(char *)x->cert_info->serialNumber->data;
strncpy(buf[2],outdir,BSIZE-(j*2)-6);
buf[2][BSIZE-(j*2)-6]='\0';
#ifndef OPENSSL_SYS_VMS
strcat(buf[2],"/");
@@ -1351,6 +1357,7 @@ bad:
{
/* Rename the database and the serial file */
strncpy(buf[2],serialfile,BSIZE-4);
buf[2][BSIZE-4]='\0';
#ifdef OPENSSL_SYS_VMS
strcat(buf[2],"-old");
@@ -1379,6 +1386,7 @@ bad:
}
strncpy(buf[2],dbfile,BSIZE-4);
buf[2][BSIZE-4]='\0';
#ifdef OPENSSL_SYS_VMS
strcat(buf[2],"-old");
@@ -1551,6 +1559,7 @@ bad:
X509_free(revcert);
strncpy(buf[0],dbfile,BSIZE-4);
buf[0][BSIZE-4]='\0';
#ifndef OPENSSL_SYS_VMS
strcat(buf[0],".new");
#else
@@ -1565,11 +1574,16 @@ bad:
j=TXT_DB_write(out,db);
if (j <= 0) goto err;
strncpy(buf[1],dbfile,BSIZE-4);
buf[1][BSIZE-4]='\0';
#ifndef OPENSSL_SYS_VMS
strcat(buf[1],".old");
#else
strcat(buf[1],"-old");
#endif
BIO_free(in);
in = NULL;
BIO_free(out);
out = NULL;
if (rename(dbfile,buf[1]) < 0)
{
BIO_printf(bio_err,"unable to rename %s to %s\n", dbfile, buf[1]);
@@ -1864,7 +1878,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
if (subj)
{
X509_NAME *n = do_subject(subj);
X509_NAME *n = do_subject(subj, MBSTRING_ASC);
if (!n)
{
@@ -3008,65 +3022,124 @@ int make_revoked(X509_REVOKED *rev, char *str)
return ret;
}
static X509_NAME *do_subject(char *subject)
/*
* subject is expected to be in the format /type0=value0/type1=value1/type2=...
* where characters may be escaped by \
*/
X509_NAME *do_subject(char *subject, long chtype)
{
size_t buflen = strlen(subject)+1; /* to copy the types and values into. due to escaping, the copy can only become shorter */
char *buf = OPENSSL_malloc(buflen);
size_t max_ne = buflen / 2 + 1; /* maximum number of name elements */
char **ne_types = OPENSSL_malloc(max_ne * sizeof (char *));
char **ne_values = OPENSSL_malloc(max_ne * sizeof (char *));
char *sp = subject, *bp = buf;
int i, ne_num = 0;
X509_NAME *n = NULL;
int nid;
int i, nid, ne_num=0;
if (!buf || !ne_types || !ne_values)
{
BIO_printf(bio_err, "malloc error\n");
goto error;
}
char *ne_name = NULL;
char *ne_value = NULL;
if (*subject != '/')
{
BIO_printf(bio_err, "Subject does not start with '/'.\n");
goto error;
}
sp++; /* skip leading / */
char *tmp = NULL;
char *p[2];
char *str_list[256];
p[0] = ",/";
p[1] = "=";
n = X509_NAME_new();
tmp = strtok(subject, p[0]);
while((tmp != NULL) && (ne_num < (sizeof str_list/sizeof *str_list)))
while (*sp)
{
/* collect type */
ne_types[ne_num] = bp;
while (*sp)
{
char *token = tmp;
while (token[0] == ' ')
token++;
str_list[ne_num] = token;
tmp = strtok(NULL, p[0]);
ne_num++;
if (*sp == '\\') /* is there anything to escape in the type...? */
if (*++sp)
*bp++ = *sp++;
else
{
BIO_printf(bio_err, "escape character at end of string\n");
goto error;
}
else if (*sp == '=')
{
sp++;
*bp++ = '\0';
break;
}
else
*bp++ = *sp++;
}
if (!*sp)
{
BIO_printf(bio_err, "end of string encountered while processing type of subject name element #%d\n", ne_num);
goto error;
}
ne_values[ne_num] = bp;
while (*sp)
{
if (*sp == '\\')
if (*++sp)
*bp++ = *sp++;
else
{
BIO_printf(bio_err, "escape character at end of string\n");
goto error;
}
else if (*sp == '/')
{
sp++;
break;
}
else
*bp++ = *sp++;
}
*bp++ = '\0';
ne_num++;
}
if (!(n = X509_NAME_new()))
goto error;
for (i = 0; i < ne_num; i++)
{
ne_name = strtok(str_list[i], p[1]);
ne_value = strtok(NULL, p[1]);
if ((nid=OBJ_txt2nid(ne_name)) == NID_undef)
if ((nid=OBJ_txt2nid(ne_types[i])) == NID_undef)
{
BIO_printf(bio_err, "Subject Attribute %s has no known NID, skipped\n", ne_name);
BIO_printf(bio_err, "Subject Attribute %s has no known NID, skipped\n", ne_types[i]);
continue;
}
if (ne_value == NULL)
if (!*ne_values[i])
{
BIO_printf(bio_err, "No value provided for Subject Attribute %s, skipped\n", ne_name);
BIO_printf(bio_err, "No value provided for Subject Attribute %s, skipped\n", ne_types[i]);
continue;
}
if (!X509_NAME_add_entry_by_NID(n, nid, MBSTRING_ASC, (unsigned char*)ne_value, -1,-1,0))
{
X509_NAME_free(n);
return NULL;
}
if (!X509_NAME_add_entry_by_NID(n, nid, chtype, (unsigned char*)ne_values[i], -1,-1,0))
goto error;
}
OPENSSL_free(ne_values);
OPENSSL_free(ne_types);
OPENSSL_free(buf);
return n;
}
error:
X509_NAME_free(n);
if (ne_values)
OPENSSL_free(ne_values);
if (ne_types)
OPENSSL_free(ne_types);
if (buf)
OPENSSL_free(buf);
return NULL;
}
int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str)
{

View File

@@ -87,6 +87,7 @@ static char *crl_usage[]={
" -noout - no CRL output\n",
" -CAfile name - verify CRL using certificates in file \"name\"\n",
" -CApath dir - verify CRL using certificates in \"dir\"\n",
" -nameopt arg - various certificate name options\n",
NULL
};
@@ -97,6 +98,7 @@ int MAIN(int, char **);
int MAIN(int argc, char **argv)
{
unsigned long nmflag = 0;
X509_CRL *x=NULL;
char *CAfile = NULL, *CApath = NULL;
int ret=1,i,num,badops=0;
@@ -105,7 +107,7 @@ int MAIN(int argc, char **argv)
char *infile=NULL,*outfile=NULL;
int hash=0,issuer=0,lastupdate=0,nextupdate=0,noout=0,text=0;
int fingerprint = 0;
char **pp,buf[256];
char **pp;
X509_STORE *store = NULL;
X509_STORE_CTX ctx;
X509_LOOKUP *lookup = NULL;
@@ -120,6 +122,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
if (bio_out == NULL)
if ((bio_out=BIO_new(BIO_s_file())) != NULL)
{
@@ -185,6 +190,11 @@ int MAIN(int argc, char **argv)
text = 1;
else if (strcmp(*argv,"-hash") == 0)
hash= ++num;
else if (strcmp(*argv,"-nameopt") == 0)
{
if (--argc < 1) goto bad;
if (!set_name_ex(&nmflag, *(++argv))) goto bad;
}
else if (strcmp(*argv,"-issuer") == 0)
issuer= ++num;
else if (strcmp(*argv,"-lastupdate") == 0)
@@ -268,9 +278,7 @@ bad:
{
if (issuer == i)
{
X509_NAME_oneline(X509_CRL_get_issuer(x),
buf,256);
BIO_printf(bio_out,"issuer= %s\n",buf);
print_name(bio_out, "issuer=", X509_CRL_get_issuer(x), nmflag);
}
if (hash == i)

View File

@@ -88,8 +88,8 @@ int MAIN(int argc, char **argv)
BIO *bmd=NULL;
BIO *out = NULL;
const char *name;
#define PROG_NAME_SIZE 16
char pname[PROG_NAME_SIZE];
#define PROG_NAME_SIZE 39
char pname[PROG_NAME_SIZE+1];
int separator=0;
int debug=0;
int keyform=FORMAT_PEM;
@@ -112,6 +112,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
/* first check the program name */
program_name(argv[0],pname,PROG_NAME_SIZE);

View File

@@ -100,6 +100,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
engine=NULL;
infile=NULL;
outfile=NULL;

View File

@@ -166,6 +166,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
infile=NULL;
outfile=NULL;
informat=FORMAT_PEM;
@@ -487,7 +490,7 @@ bad:
printf("\tif ((dh->p == NULL) || (dh->g == NULL))\n");
printf("\t\t{ DH_free(dh); return(NULL); }\n");
if (dh->length)
printf("\tdh->length = %d;\n", dh->length);
printf("\tdh->length = %ld;\n", dh->length);
printf("\treturn(dh);\n\t}\n");
OPENSSL_free(data);
}

View File

@@ -79,6 +79,9 @@
* -des - encrypt output if PEM format with DES in cbc mode
* -des3 - encrypt output if PEM format
* -idea - encrypt output if PEM format
* -aes128 - encrypt output if PEM format
* -aes192 - encrypt output if PEM format
* -aes256 - encrypt output if PEM format
* -text - print a text version
* -modulus - print the DSA public key
*/
@@ -106,6 +109,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
engine=NULL;
infile=NULL;
outfile=NULL;
@@ -188,6 +194,10 @@ bad:
BIO_printf(bio_err," -des3 encrypt PEM output with ede cbc des using 168 bit key\n");
#ifndef OPENSSL_NO_IDEA
BIO_printf(bio_err," -idea encrypt PEM output with cbc idea\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
BIO_printf(bio_err," encrypt PEM output with cbc aes\n");
#endif
BIO_printf(bio_err," -text print the key in text\n");
BIO_printf(bio_err," -noout don't print key out\n");

View File

@@ -106,6 +106,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
infile=NULL;
outfile=NULL;
informat=FORMAT_PEM;
@@ -183,9 +186,10 @@ bad:
BIO_printf(bio_err," -outform arg output format - DER or PEM\n");
BIO_printf(bio_err," -in arg input file\n");
BIO_printf(bio_err," -out arg output file\n");
BIO_printf(bio_err," -text print the key in text\n");
BIO_printf(bio_err," -text print as text\n");
BIO_printf(bio_err," -C Output C code\n");
BIO_printf(bio_err," -noout no output\n");
BIO_printf(bio_err," -genkey generate a DSA key\n");
BIO_printf(bio_err," -rand files to use for random number input\n");
BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n");
BIO_printf(bio_err," number number of bits to use for generating private key\n");

View File

@@ -132,6 +132,9 @@
* -des - encrypt output if PEM format with DES in cbc mode
* -des3 - encrypt output if PEM format
* -idea - encrypt output if PEM format
* -aes128 - encrypt output if PEM format
* -aes192 - encrypt output if PEM format
* -aes256 - encrypt output if PEM format
* -text - print a text version
* -pub - print the ECDSA public key
* -compressed - print the public key in compressed form ( default )
@@ -174,6 +177,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err, stderr, BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
engine = NULL;
infile = NULL;
outfile = NULL;
@@ -227,12 +233,12 @@ int MAIN(int argc, char **argv)
else if (strcmp(*argv, "-pub") == 0)
{
pub = 1;
buffer = (*(argv+1));
if (strcmp(buffer, "compressed") == 0)
buffer = (unsigned char *)(*(argv+1));
if (strcmp((char *)buffer, "compressed") == 0)
point_form = POINT_CONVERSION_COMPRESSED;
else if (strcmp(buffer, "hybrid") == 0)
else if (strcmp((char *)buffer, "hybrid") == 0)
point_form = POINT_CONVERSION_HYBRID;
else if (strcmp(buffer, "uncompressed") == 0)
else if (strcmp((char *)buffer, "uncompressed") == 0)
point_form = POINT_CONVERSION_UNCOMPRESSED;
if (point_form)
{
@@ -270,6 +276,10 @@ bad:
BIO_printf(bio_err, " -des3 encrypt PEM output with ede cbc des using 168 bit key\n");
#ifndef OPENSSL_NO_IDEA
BIO_printf(bio_err, " -idea encrypt PEM output with cbc idea\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf(bio_err, " -aes128, -aes192, -aes256\n");
BIO_printf(bio_err, " encrypt PEM output with cbc aes\n");
#endif
BIO_printf(bio_err, " -text print the key in text\n");
BIO_printf(bio_err, " -noout don't print key out\n");

View File

@@ -133,15 +133,16 @@
* -out arg - output file - default stdout
* -noout
* -text
* -check - validate the ec parameters
* -C
* -noout
* -genkey - generate a private public keypair based on the supplied curve
* -named_curve - use the curve oid instead of the parameters
* -NIST_192 - use the NIST recommeded curve parameters over a 192 bit prime field
* -NIST_224 - use the NIST recommeded curve parameters over a 224 bit prime field
* -NIST_256 - use the NIST recommeded curve parameters over a 256 bit prime field
* -NIST_384 - use the NIST recommeded curve parameters over a 384 bit prime field
* -NIST_521 - use the NIST recommeded curve parameters over a 521 bit prime field
* -NIST_192 - use the NIST recommended curve parameters over a 192 bit prime field
* -NIST_224 - use the NIST recommended curve parameters over a 224 bit prime field
* -NIST_256 - use the NIST recommended curve parameters over a 256 bit prime field
* -NIST_384 - use the NIST recommended curve parameters over a 384 bit prime field
* -NIST_521 - use the NIST recommended curve parameters over a 521 bit prime field
* -X9_62_192v1 - use the X9_62 192v1 example curve over a 192 bit prime field
* -X9_62_192v2 - use the X9_62 192v2 example curve over a 192 bit prime field
* -X9_62_192v3 - use the X9_62 192v3 example curve over a 192 bit prime field
@@ -149,6 +150,24 @@
* -X9_62_239v2 - use the X9_62 239v2 example curve over a 239 bit prime field
* -X9_62_239v3 - use the X9_62 239v3 example curve over a 239 bit prime field
* -X9_62_256v1 - use the X9_62 239v1 example curve over a 256 bit prime field
* -SECG_PRIME_112R1 - use the SECG 112r1 recommended curve over a 112 bit prime field
* -SECG_PRIME_112R2 - use the SECG 112r2 recommended curve over a 112 bit prime field
* -SECG_PRIME_128R1 - use the SECG 128r1 recommended curve over a 128 bit prime field
* -SECG_PRIME_128R2 - use the SECG 128r2 recommended curve over a 128 bit prime field
* -SECG_PRIME_160K1 - use the SECG 160k1 recommended curve over a 160 bit prime field
* -SECG_PRIME_160R1 - use the SECG 160r1 recommended curve over a 160 bit prime field
* -SECG_PRIME_160R2 - use the SECG 160r2 recommended curve over a 160 bit prime field
* -SECG_PRIME_192K1 - use the SECG 192k1 recommended curve over a 192 bit prime field
* -SECG_PRIME_192R1 - use the SECG 192r1 recommended curve over a 192 bit prime field
* -SECG_PRIME_224K1 - use the SECG 224k1 recommended curve over a 224 bit prime field
* -SECG_PRIME_224R1 - use the SECG 224r1 recommended curve over a 224 bit prime field
* -SECG_PRIME_256K1 - use the SECG 256k1 recommended curve over a 256 bit prime field
* -SECG_PRIME_256R1 - use the SECG 256r1 recommended curve over a 256 bit prime field
* -SECG_PRIME_384R1 - use the SECG 384r1 recommended curve over a 384 bit prime field
* -SECG_PRIME_521R1 - use the SECG 521r1 recommended curve over a 521 bit prime field
* -WTLS_6 - use the WAP/WTLS recommended curve number 6 over a 112 bit field
* -WTLS_8 - use the WAP/WTLS recommended curve number 8 over a 112 bit field
* -WTLS_9 - use the WAP/WTLS recommended curve number 9 over a 160 bit field
*/
int MAIN(int, char **);
@@ -162,6 +181,7 @@ int MAIN(int argc, char **argv)
int informat, outformat, noout = 0, C = 0, ret = 1;
char *infile, *outfile, *prog, *inrand = NULL;
int genkey = 0;
int check = 0;
int need_rand = 0;
char *engine=NULL;
int curve_type = EC_GROUP_NO_CURVE;
@@ -178,6 +198,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
infile=NULL;
outfile=NULL;
informat=FORMAT_PEM;
@@ -217,6 +240,8 @@ int MAIN(int argc, char **argv)
text = 1;
else if (strcmp(*argv,"-C") == 0)
C = 1;
else if (strcmp(*argv,"-check") == 0)
check = 1;
else if (strcmp(*argv,"-genkey") == 0)
{
genkey = 1;
@@ -254,6 +279,42 @@ int MAIN(int argc, char **argv)
curve_type = EC_GROUP_X9_62_PRIME_239V3;
else if (strcmp(*argv, "-X9_62_256v1") == 0)
curve_type = EC_GROUP_X9_62_PRIME_256V1;
else if (strcmp(*argv, "-SECG_PRIME_112R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_112R1;
else if (strcmp(*argv, "-SECG_PRIME_112R2") == 0)
curve_type = EC_GROUP_SECG_PRIME_112R2;
else if (strcmp(*argv, "-SECG_PRIME_128R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_128R1;
else if (strcmp(*argv, "-SECG_PRIME_128R2") == 0)
curve_type = EC_GROUP_SECG_PRIME_128R2;
else if (strcmp(*argv, "-SECG_PRIME_160K1") == 0)
curve_type = EC_GROUP_SECG_PRIME_160K1;
else if (strcmp(*argv, "-SECG_PRIME_160R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_160R1;
else if (strcmp(*argv, "-SECG_PRIME_160R2") == 0)
curve_type = EC_GROUP_SECG_PRIME_160R2;
else if (strcmp(*argv, "-SECG_PRIME_192K1") == 0)
curve_type = EC_GROUP_SECG_PRIME_192K1;
else if (strcmp(*argv, "-SECG_PRIME_192R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_192R1;
else if (strcmp(*argv, "-SECG_PRIME_224K1") == 0)
curve_type = EC_GROUP_SECG_PRIME_224K1;
else if (strcmp(*argv, "-SECG_PRIME_224R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_224R1;
else if (strcmp(*argv, "-SECG_PRIME_256K1") == 0)
curve_type = EC_GROUP_SECG_PRIME_256K1;
else if (strcmp(*argv, "-SECG_PRIME_256R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_256R1;
else if (strcmp(*argv, "-SECG_PRIME_384R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_384R1;
else if (strcmp(*argv, "-SECG_PRIME_521R1") == 0)
curve_type = EC_GROUP_SECG_PRIME_521R1;
else if (strcmp(*argv, "-WTLS_6") == 0)
curve_type = EC_GROUP_WTLS_6;
else if (strcmp(*argv, "-WTLS_8") == 0)
curve_type = EC_GROUP_WTLS_8;
else if (strcmp(*argv, "-WTLS_9") == 0)
curve_type = EC_GROUP_WTLS_9;
else if (strcmp(*argv, "-noout") == 0)
noout=1;
else
@@ -271,28 +332,47 @@ int MAIN(int argc, char **argv)
bad:
BIO_printf(bio_err,"%s [options] [bits] <infile >outfile\n",prog);
BIO_printf(bio_err,"where options are\n");
BIO_printf(bio_err," -inform arg input format - DER or PEM\n");
BIO_printf(bio_err," -outform arg output format - DER or PEM\n");
BIO_printf(bio_err," -in arg input file\n");
BIO_printf(bio_err," -out arg output file\n");
BIO_printf(bio_err," -text print the key in text\n");
BIO_printf(bio_err," -C Output C code\n");
BIO_printf(bio_err," -noout no output\n");
BIO_printf(bio_err," -rand files to use for random number input\n");
BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n");
BIO_printf(bio_err," -named_curve use the curve oid instead of the parameters\n");
BIO_printf(bio_err," -NIST_192 use the NIST recommeded curve parameters over a 192 bit prime field\n");
BIO_printf(bio_err," -NIST_224 use the NIST recommeded curve parameters over a 224 bit prime field\n");
BIO_printf(bio_err," -NIST_256 use the NIST recommeded curve parameters over a 256 bit prime field\n");
BIO_printf(bio_err," -NIST_384 use the NIST recommeded curve parameters over a 384 bit prime field\n");
BIO_printf(bio_err," -NIST_521 use the NIST recommeded curve parameters over a 521 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v1 use the X9_62 192v1 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v2 use the X9_62 192v2 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v3 use the X9_62 192v3 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v1 use the X9_62 239v1 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v2 use the X9_62 239v2 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v3 use the X9_62 239v3 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_256v1 use the X9_62 239v1 example curve over a 256 bit prime field\n");
BIO_printf(bio_err," -inform arg input format - DER or PEM\n");
BIO_printf(bio_err," -outform arg output format - DER or PEM\n");
BIO_printf(bio_err," -in arg input file\n");
BIO_printf(bio_err," -out arg output file\n");
BIO_printf(bio_err," -text print as text\n");
BIO_printf(bio_err," -C Output C code\n");
BIO_printf(bio_err," -check validate the ec parameters\n");
BIO_printf(bio_err," -noout no output\n");
BIO_printf(bio_err," -rand files to use for random number input\n");
BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n");
BIO_printf(bio_err," -named_curve use the curve oid instead of the parameters\n");
BIO_printf(bio_err," -NIST_192 use the NIST recommended curve parameters over a 192 bit prime field\n");
BIO_printf(bio_err," -NIST_224 use the NIST recommended curve parameters over a 224 bit prime field\n");
BIO_printf(bio_err," -NIST_256 use the NIST recommended curve parameters over a 256 bit prime field\n");
BIO_printf(bio_err," -NIST_384 use the NIST recommended curve parameters over a 384 bit prime field\n");
BIO_printf(bio_err," -NIST_521 use the NIST recommended curve parameters over a 521 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v1 use the X9_62 192v1 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v2 use the X9_62 192v2 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_192v3 use the X9_62 192v3 example curve over a 192 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v1 use the X9_62 239v1 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v2 use the X9_62 239v2 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_239v3 use the X9_62 239v3 example curve over a 239 bit prime field\n");
BIO_printf(bio_err," -X9_62_256v1 use the X9_62 239v1 example curve over a 256 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_112R1 use the SECG 112r1 recommended curve over a 112 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_112R2 use the SECG 112r2 recommended curve over a 112 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_128R1 use the SECG 128r1 recommended curve over a 128 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_128R2 use the SECG 128r2 recommended curve over a 128 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_160K1 use the SECG 160k1 recommended curve over a 160 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_160R1 use the SECG 160r1 recommended curve over a 160 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_160R2 use the SECG 160r2 recommended curve over a 160 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_192K1 use the SECG 192k1 recommended curve over a 192 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_192R1 use the SECG 192r1 recommended curve over a 192 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_224K1 use the SECG 224k1 recommended curve over a 224 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_224R1 use the SECG 224r1 recommended curve over a 224 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_256K1 use the SECG 256k1 recommended curve over a 256 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_256R1 use the SECG 256r1 recommended curve over a 256 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_384R1 use the SECG 384r1 recommended curve over a 384 bit prime field\n");
BIO_printf(bio_err," -SECG_PRIME_521R1 use the SECG 521r1 recommended curve over a 521 bit prime field\n");
BIO_printf(bio_err," -WTLS_6 use the WAP/WTLS recommended curve number 6 over a 112 bit field\n");
BIO_printf(bio_err," -WTLS_8 use the WAP/WTLS recommended curve number 8 over a 112 bit field\n");
BIO_printf(bio_err," -WTLS_9 use the WAP/WTLS recommended curve number 9 over a 112 bit field\n");
goto end;
}
@@ -373,9 +453,24 @@ bad:
{
ECDSAParameters_print(out, ecdsa);
}
if (check)
{
if (ecdsa == NULL)
BIO_printf(bio_err, "no elliptic curve parameters\n");
BIO_printf(bio_err, "checking elliptic curve parameters: ");
if (!EC_GROUP_check(ecdsa->group, NULL))
{
BIO_printf(bio_err, "failed\n");
ERR_print_errors(bio_err);
}
else
BIO_printf(bio_err, "ok\n");
}
if (C)
{ // TODO : characteristic two
{ /* TODO: characteristic two */
int l, len, bits_p;
if ((tmp_1 = BN_new()) == NULL || (tmp_2 = BN_new()) == NULL ||
(tmp_3 = BN_new()) == NULL || (tmp_4 = BN_new()) == NULL ||
@@ -411,7 +506,7 @@ bad:
if ((i%12) == 0) printf("\n\t");
printf("0x%02X,",data[i]);
}
printf("\n\t};\n");
printf("\n\t};\n\n");
l = BN_bn2bin(tmp_2, data);
printf("static unsigned char ecdsa%d_a[]={",bits_p);
@@ -431,34 +526,34 @@ bad:
}
printf("\n\t};\n\n");
l = BN_bn2bin(tmp_3, data);
l = BN_bn2bin(tmp_4, data);
printf("static unsigned char ecdsa%d_x[]={", bits_p);
for (i=0; i<l; i++)
{
if ((i%12) == 0) printf("\n\t");
printf("0x%02X,",data[i]);
}
printf("\n\t};\n\n");
printf("\n\t};\n");
l = BN_bn2bin(tmp_3, data);
l = BN_bn2bin(tmp_5, data);
printf("static unsigned char ecdsa%d_y[]={", bits_p);
for (i=0; i<l; i++)
{
if ((i%12) == 0) printf("\n\t");
printf("0x%02X,",data[i]);
}
printf("\n\t};\n\n");
printf("\n\t};\n");
l = BN_bn2bin(tmp_3, data);
l = BN_bn2bin(tmp_6, data);
printf("static unsigned char ecdsa%d_o[]={", bits_p);
for (i=0; i<l; i++)
{
if ((i%12) == 0) printf("\n\t");
printf("0x%02X,",data[i]);
}
printf("\n\t};\n\n");
printf("\n\t};\n");
l = BN_bn2bin(tmp_3, data);
l = BN_bn2bin(tmp_7, data);
printf("static unsigned char ecdsa%d_c[]={", bits_p);
for (i=0; i<l; i++)
{
@@ -468,38 +563,41 @@ bad:
printf("\n\t};\n\n");
/* FIXME:
* the generated code does not make much sense
*
* TODO:
* use EC_GROUP_new_curve_GFp instead of using EC_GFp_mont_method directly
* generated code should check for errors
*/
printf("ECDSA *get_ecdsa%d()\n\t{\n",bits_p);
printf("\tint ok=1;\n");
printf("ECDSA *get_ecdsa%d(void)\n\t{\n",bits_p);
printf("\tint ok=0;\n");
printf("\tECDSA *ecdsa=NULL;\n");
printf("\tEC_POINT *point=NULL;\n");
printf("\tBIGNUM *tmp_1=NULL,*tmp_2=NULL,*tmp_3=NULL;\n");
printf("\tBN_CTX *ctx=NULL;\n\n");
printf("\tecdsa=ECDSA_new();\n");
printf("\ttmp_1=BN_new();\n");
printf("\ttmp_2=BN_new();\n");
printf("\ttmp_3=BN_new();\n");
printf("\tctx=BN_CTX_new();\n");
printf("\tif (!ecdsa || !tmp_1 || !tmp_2 || !tmp_3 || !ctx) ok=0;\n");
printf("\tif (ok && !ecdsa->group=EC_GROUP_new(EC_GFp_mont_method())) == NULL) ok=0;");
printf("\tif (ok && !BN_bin2bn(ecdsa%d_p,sizeof(ecdsa%d_p),tmp_1)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !BN_bin2bn(ecdsa%d_a,sizeof(ecdsa%d_a),tmp_2)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !BN_bin2bn(ecdsa%d_b,sizeof(ecdsa%d_b),tmp_3)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !EC_GROUP_set_curve_GFp(ecdsa->group,tmp_1,tmp_2,tmp_3,ctx)) ok=0;\n");
printf("\tif (ok && !BN_bin2bn(ecdsa%d_x,sizeof(ecdsa%d_p),tmp_1)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !BN_bin2bn(ecdsa%d_y,sizeof(ecdsa%d_a),tmp_2)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && (point = EC_POINT_new(ecdsa->group)) == NULL) ok=0;\n");
printf("\tif (ok && !EC_POINT_set_affine_coordinates_GFp(ecdsa->group,point,tmp_1,tmp_2,ctx)) ok=0:\n");
printf("\tif (ok && !BN_bin2bn(ecdsa%d_o,sizeof(ecdsa%d_b),tmp_1)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !BN_bin2bn(ecdsa%d_c,sizeof(ecdsa%d_b),tmp_2)) ok=0;\n", bits_p, bits_p);
printf("\tif (ok && !EC_GROUP_set_generator(ecdsa->group,point,tmp_1,tmp_2)) ok=0;\n");
printf("\tif ((ecdsa->group == NULL) || (ecdsa->pub_key == NULL) || (ecdsa->priv_key == NULL))\n");
printf("\t\t{ ECDSA_free(ecdsa); return(NULL); }\n");
printf("\tBIGNUM *tmp_1=NULL,*tmp_2=NULL,*tmp_3=NULL;\n\n");
printf("\tif ((ecdsa=ECDSA_new()) == NULL)\n");
printf("\t\treturn(NULL);\n\n");
printf("\t/* generate EC_GROUP structure */\n");
printf("\tif ((tmp_1 = BN_bin2bn(ecdsa%d_p, sizeof(ecdsa%d_p), NULL)) == NULL) goto err;\n", bits_p, bits_p);
printf("\tif ((tmp_2 = BN_bin2bn(ecdsa%d_a, sizeof(ecdsa%d_a), NULL)) == NULL) goto err;\n", bits_p, bits_p);
printf("\tif ((tmp_3 = BN_bin2bn(ecdsa%d_b, sizeof(ecdsa%d_b), NULL)) == NULL) goto err;\n", bits_p, bits_p);
printf("\tif ((ecdsa->group = EC_GROUP_new_curve_GFp(tmp_1, tmp_2, tmp_3, NULL)) == NULL) goto err;\n\n");
printf("\t/* build generator */\n");
printf("\tif (!BN_bin2bn(ecdsa%d_x, sizeof(ecdsa%d_x), tmp_1)) goto err;\n", bits_p, bits_p);
printf("\tif (!BN_bin2bn(ecdsa%d_y, sizeof(ecdsa%d_y), tmp_2)) goto err;\n", bits_p, bits_p);
printf("\tif ((point = EC_POINT_new(ecdsa->group)) == NULL) goto err;\n");
printf("\tif (!EC_POINT_set_affine_coordinates_GFp(ecdsa->group, point, tmp_1, tmp_2, NULL)) goto err;\n");
printf("\t/* set generator, order and cofactor */\n");
printf("\tif (!BN_bin2bn(ecdsa%d_o, sizeof(ecdsa%d_o), tmp_1)) goto err;\n", bits_p, bits_p);
printf("\tif (!BN_bin2bn(ecdsa%d_c, sizeof(ecdsa%d_c), tmp_2)) goto err;\n", bits_p, bits_p);
printf("\tif (!EC_GROUP_set_generator(ecdsa->group, point, tmp_1, tmp_2)) goto err;\n");
printf("\n\tok=1;\n");
printf("err:\n");
printf("\tif (tmp_1) BN_free(tmp_1);\n");
printf("\tif (tmp_2) BN_free(tmp_2);\n");
printf("\tif (tmp_3) BN_free(tmp_3);\n");
printf("\tif (point) EC_POINT_free(point);\n");
printf("\tif (!ok)\n");
printf("\t\t{\n");
printf("\t\tECDSA_free(ecdsa);\n");
printf("\t\tecdsa = NULL;\n");
printf("\t\t}\n");
printf("\treturn(ecdsa);\n\t}\n");
}

View File

@@ -117,8 +117,8 @@ int MAIN(int argc, char **argv)
const EVP_CIPHER *cipher=NULL,*c;
char *inf=NULL,*outf=NULL;
BIO *in=NULL,*out=NULL,*b64=NULL,*benc=NULL,*rbio=NULL,*wbio=NULL;
#define PROG_NAME_SIZE 16
char pname[PROG_NAME_SIZE];
#define PROG_NAME_SIZE 39
char pname[PROG_NAME_SIZE+1];
char *engine = NULL;
apps_startup();
@@ -127,6 +127,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
/* first check the program name */
program_name(argv[0],pname,PROG_NAME_SIZE);
if (strcmp(pname,"base64") == 0)
@@ -482,11 +485,6 @@ bad:
else
memset(str,0,strlen(str));
}
if ((hiv != NULL) && !set_hex(hiv,iv,sizeof iv))
{
BIO_printf(bio_err,"invalid hex iv value\n");
goto end;
}
if ((hiv == NULL) && (str == NULL))
{
/* No IV was explicitly set and no IV was generated
@@ -495,6 +493,11 @@ bad:
BIO_printf(bio_err, "iv undefined\n");
goto end;
}
if ((hiv != NULL) && !set_hex(hiv,iv,sizeof iv))
{
BIO_printf(bio_err,"invalid hex iv value\n");
goto end;
}
if ((hkey != NULL) && !set_hex(hkey,key,sizeof key))
{
BIO_printf(bio_err,"invalid hex key value\n");

View File

@@ -356,6 +356,9 @@ int MAIN(int argc, char **argv)
if (bio_err == NULL)
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
bio_out=BIO_new_fp(stdout,BIO_NOCLOSE);
#ifdef OPENSSL_SYS_VMS
{

View File

@@ -96,6 +96,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
argv++;
argc--;
for (;;)

View File

@@ -93,6 +93,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
argv++;
argc--;
for (;;)
@@ -129,6 +132,14 @@ int MAIN(int argc, char **argv)
#ifndef OPENSSL_NO_IDEA
else if (strcmp(*argv,"-idea") == 0)
enc=EVP_idea_cbc();
#endif
#ifndef OPENSSL_NO_AES
else if (strcmp(*argv,"-aes128") == 0)
enc=EVP_aes_128_cbc();
else if (strcmp(*argv,"-aes192") == 0)
enc=EVP_aes_192_cbc();
else if (strcmp(*argv,"-aes256") == 0)
enc=EVP_aes_256_cbc();
#endif
else if (**argv != '-' && dsaparams == NULL)
{
@@ -151,6 +162,10 @@ bad:
#endif
#ifndef OPENSSL_NO_IDEA
BIO_printf(bio_err," -idea - encrypt the generated key with IDEA in cbc mode\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
BIO_printf(bio_err," encrypt PEM output with cbc aes\n");
#endif
BIO_printf(bio_err," -engine e - use engine e, possibly a hardware device.\n");
BIO_printf(bio_err," -rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);

View File

@@ -99,6 +99,9 @@ int MAIN(int argc, char **argv)
if (bio_err == NULL)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto err;
if ((out=BIO_new(BIO_s_file())) == NULL)
{
BIO_printf(bio_err,"unable to create BIO for output\n");
@@ -138,6 +141,14 @@ int MAIN(int argc, char **argv)
#ifndef OPENSSL_NO_IDEA
else if (strcmp(*argv,"-idea") == 0)
enc=EVP_idea_cbc();
#endif
#ifndef OPENSSL_NO_AES
else if (strcmp(*argv,"-aes128") == 0)
enc=EVP_aes_128_cbc();
else if (strcmp(*argv,"-aes192") == 0)
enc=EVP_aes_192_cbc();
else if (strcmp(*argv,"-aes256") == 0)
enc=EVP_aes_256_cbc();
#endif
else if (strcmp(*argv,"-passout") == 0)
{
@@ -157,6 +168,10 @@ bad:
BIO_printf(bio_err," -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)\n");
#ifndef OPENSSL_NO_IDEA
BIO_printf(bio_err," -idea encrypt the generated key with IDEA in cbc mode\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
BIO_printf(bio_err," encrypt PEM output with cbc aes\n");
#endif
BIO_printf(bio_err," -out file output the key to 'file\n");
BIO_printf(bio_err," -passout arg output file pass phrase source\n");

View File

@@ -62,7 +62,9 @@ $ COPY CA.COM WRK_SSLAEXE:CA.COM/LOG
$ SET FILE/PROT=W:RE WRK_SSLAEXE:CA.COM
$ COPY CA.COM WRK_SSLVEXE:CA.COM/LOG
$ SET FILE/PROT=W:RE WRK_SSLVEXE:CA.COM
$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL-VMS.CNF/LOG
$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL-VMS.CNF
$ COPY OPENSSL.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
$ SET ON
$

View File

@@ -44,12 +44,19 @@ $! keywords:
$!
$! UCX for UCX
$! SOCKETSHR for SOCKETSHR+NETLIB
$! TCPIP for TCPIP (post UCX)
$!
$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
$!
$! P6, if defined, sets a choice of programs to compile.
$!
$!
$!
$! Define USER_CCFLAGS
$!
$ @[-]vms_build_info.com
$ WRITE SYS$OUTPUT " Using USER_CCFLAGS = ", USER_CCFLAGS
$!
$! Define A TCP/IP Library That We Will Need To Link To.
$! (That Is, If We Need To Link To One.)
$!
@@ -98,15 +105,15 @@ $ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
$!
$! Define The CRYPTO Library.
$!
$ CRYPTO_LIB := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB
$ CRYPTO_LIB := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO'build_bits'.OLB
$!
$! Define The RSAREF Library.
$!
$ RSAREF_LIB := SYS$DISK:[-.'ARCH'.EXE.RSAREF]LIBRSAGLUE.OLB
$ RSAREF_LIB := SYS$DISK:[-.'ARCH'.EXE.RSAREF]LIBRSAGLUE'build_bits'.OLB
$!
$! Define The SSL Library.
$!
$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL'build_bits'.OLB
$!
$! Define The OBJ Directory.
$!
@@ -125,6 +132,23 @@ $! End The OBJ Directory Check.
$!
$ ENDIF
$!
$! Define The LIS Directory.
$!
$ LIS_DIR := SYS$DISK:[-.'ARCH'.LIS.APPS]
$!
$! Check To See If The OBJ Directory Exists.
$!
$ IF (F$PARSE(LIS_DIR).EQS."")
$ THEN
$!
$! It Dosen't Exist, So Create It.
$!
$ CREATE/DIRECTORY 'LIS_DIR'
$!
$! End The LIS Directory Check.
$!
$ ENDIF
$!
$! Define The EXE Directory.
$!
$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
@@ -155,13 +179,13 @@ $!
$ LIB_FILES = "VERIFY;ASN1PARS;REQ;DGST;DH;DHPARAM;ENC;PASSWD;GENDH;ERRSTR;"+-
"CA;PKCS7;CRL2P7;CRL;"+-
"RSA;RSAUTL;DSA;DSAPARAM;"+-
"X509;GENRSA;GENDSA;S_SERVER;S_CLIENT;SPEED;"+-
"X509;GENRSA;GENDSA;TERM_SOCK;S_SERVER;S_CLIENT;SPEED;"+-
"S_TIME;APPS;S_CB;S_SOCKET;APP_RAND;VERSION;SESS_ID;"+-
"CIPHERS;NSEQ;PKCS12;PKCS8;SPKAC;SMIME;RAND;ENGINE;OCSP"
$ APP_FILES := OPENSSL,'OBJ_DIR'VERIFY.OBJ,ASN1PARS.OBJ,REQ.OBJ,DGST.OBJ,DH.OBJ,DHPARAM.OBJ,ENC.OBJ,PASSWD.OBJ,GENDH.OBJ,ERRSTR.OBJ,-
CA.OBJ,PKCS7.OBJ,CRL2P7.OBJ,CRL.OBJ,-
RSA.OBJ,RSAUTL.OBJ,DSA.OBJ,DSAPARAM.OBJ,-
X509.OBJ,GENRSA.OBJ,GENDSA.OBJ,S_SERVER.OBJ,S_CLIENT.OBJ,SPEED.OBJ,-
X509.OBJ,GENRSA.OBJ,GENDSA.OBJ,TERM_SOCK.OBJ,S_SERVER.OBJ,S_CLIENT.OBJ,SPEED.OBJ,-
S_TIME.OBJ,APPS.OBJ,S_CB.OBJ,S_SOCKET.OBJ,APP_RAND.OBJ,VERSION.OBJ,SESS_ID.OBJ,-
CIPHERS.OBJ,NSEQ.OBJ,PKCS12.OBJ,PKCS8.OBJ,SPKAC.OBJ,SMIME.OBJ,RAND.OBJ,ENGINE.OBJ,OCSP.OBJ
$ TCPIP_PROGRAMS = ",,"
@@ -234,6 +258,10 @@ $! Create The Object File Name.
$!
$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
$!
$! Create The Listing File Name.
$!
$ LIST_FILE = LIS_DIR + FILE_NAME + ".LIS"
$!
$! Create The Executable File Name.
$!
$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
@@ -247,7 +275,7 @@ $!
$! Tell The User That The File Dosen't Exist.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
$ WRITE SYS$OUTPUT F$MESSAGE("%X10018290") + ". The File ",SOURCE_FILE," Dosen't Exist."
$ WRITE SYS$OUTPUT ""
$!
$! Exit The Build.
@@ -272,9 +300,9 @@ $!
$ ON ERROR THEN GOTO NEXT_FILE
$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
$ THEN
$ CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
$ CC2/OBJECT='OBJECT_FILE'/LIST='LIST_FILE'/MACHINE_CODE 'SOURCE_FILE'
$ ELSE
$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
$ CC/OBJECT='OBJECT_FILE'/LIST='LIST_FILE'/MACHINE_CODE 'SOURCE_FILE'
$ ENDIF
$!
$ ON WARNING THEN GOTO NEXT_FILE
@@ -304,10 +332,14 @@ $ THEN
$!
$! Link With The RSAREF Library And A Specific TCP/IP Library.
$!
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
$ LINK /'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' /MAP='MAP_FILE' /FULL/CROSS -
'OBJECT_FILE''EXTRA_OBJ', -
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
'TCPIP_LIB','OPT_FILE'/OPTION
'SSL_LIB'/LIBRARY,-
'CRYPTO_LIB'/LIBRARY, -
'RSAREF_LIB'/LIBRARY, -
'TCPIP_LIB', -
'OPT_FILE'/OPTION, -
SYS$DISK:[-]SSL_IDENT.OPT/OPTION
$!
$! Else...
$!
@@ -315,10 +347,13 @@ $ ELSE
$!
$! Link With The RSAREF Library And NO TCP/IP Library.
$!
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
$ LINK /'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' /MAP='MAP_FILE' /FULL/CROSS -
'OBJECT_FILE''EXTRA_OBJ', -
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
'OPT_FILE'/OPTION
'SSL_LIB'/LIBRARY, -
'CRYPTO_LIB'/LIBRARY, -
'RSAREF_LIB'/LIBRARY, -
'OPT_FILE'/OPTION, -
SYS$DISK:[-]SSL_IDENT.OPT/OPTION
$!
$! End The TCP/IP Library Check.
$!
@@ -338,10 +373,14 @@ $ THEN
$!
$! Don't Link With The RSAREF Routines And TCP/IP Library.
$!
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' /MAP='MAP_FILE' /FULL/CROSS -
'OBJECT_FILE''EXTRA_OBJ', -
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
'TCPIP_LIB','OPT_FILE'/OPTION
'SSL_LIB'/LIBRARY, -
'CRYPTO_LIB'/LIBRARY, -
'TCPIP_LIB', -
'OPT_FILE'/OPTION, -
SYS$DISK:[-]SSL_IDENT.OPT/OPTION
$!
$! Else...
$!
@@ -349,10 +388,13 @@ $ ELSE
$!
$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
$!
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' /MAP='MAP_FILE' /FULL/CROSS -
'OBJECT_FILE''EXTRA_OBJ', -
'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
'OPT_FILE'/OPTION
'SSL_LIB'/LIBRARY, -
'CRYPTO_LIB'/LIBRARY, -
'OPT_FILE'/OPTION, -
SYS$DISK:[-]SSL_IDENT.OPT/OPTION
$!
$!
$! End The TCP/IP Library Check.
$!
@@ -489,6 +531,7 @@ $! End The Option File Search.
$!
$ ENDIF
$!
$!
$! End The DEC C Check.
$!
$ ENDIF
@@ -838,12 +881,12 @@ $ CC = "CC"
$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
THEN CC = "CC/DECC"
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
"/NOLIST/PREFIX=ALL" + -
"/PREFIX=ALL" + -
"/INCLUDE=(SYS$DISK:[-])" + CCEXTRAFLAGS
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
$ OPT_FILE = "SYS$DISK:[]''arch'_DECC_OPTIONS.OPT"
$!
$! End DECC Check.
$!
@@ -870,7 +913,7 @@ $ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
$ EXIT
$ ENDIF
$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'" + -
"/INCLUDE=(SYS$DISK:[-])" + CCEXTRAFLAGS
$ CCDEFS = CCDEFS + ",""VAXC"""
$!
@@ -880,7 +923,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
$ OPT_FILE = "SYS$DISK:[]''arch'_VAXC_OPTIONS.OPT"
$!
$! End VAXC Check
$!
@@ -902,12 +945,12 @@ $!
$! Use GNU C...
$!
$ IF F$TYPE(GCC) .EQS. "" THEN GCC := GCC
$ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
$ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'" + -
"/INCLUDE=(SYS$DISK:[-])" + CCEXTRAFLAGS
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
$ OPT_FILE = "SYS$DISK:[]''arch'_GNUC_OPTIONS.OPT"
$!
$! End The GNU C Check.
$!
@@ -963,7 +1006,7 @@ $ ENDIF
$!
$! Time to check the contents, and to make sure we get the correct library.
$!
$ IF P4.EQS."SOCKETSHR" .OR. P4.EQS."MULTINET" .OR. P4.EQS."UCX"
$ IF P4.EQS."SOCKETSHR" .OR. P4.EQS."MULTINET" .OR. P4.EQS."UCX" .OR. P4.EQS."TCPIP" .OR. P4.EQS."NONE"
$ THEN
$!
$! Check to see if SOCKETSHR was chosen
@@ -973,7 +1016,7 @@ $ THEN
$!
$! Set the library to use SOCKETSHR
$!
$ TCPIP_LIB = "[-.VMS]SOCKETSHR_SHR.OPT/OPT"
$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
$!
$! Done with SOCKETSHR
$!
@@ -999,19 +1042,45 @@ $ THEN
$!
$! Set the library to use UCX.
$!
$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC.OPT/OPT"
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
$ THEN
$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
$ ELSE
$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
TCPIP_LIB = "[-.VMS]UCX_SHR_VAXC.OPT/OPT"
TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
$ ENDIF
$!
$! Done with UCX
$!
$ ENDIF
$!
$! Check to see if TCPIP (post UCX) was chosen
$!
$ IF P4.EQS."TCPIP"
$ THEN
$!
$! Set the library to use TCPIP.
$!
$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
$!
$! Done with TCPIP
$!
$ ENDIF
$!
$! Check to see if NONE was chosen
$!
$ IF P4.EQS."NONE"
$ THEN
$!
$! Do not use TCPIP.
$!
$ TCPIP_LIB = ""
$!
$! Done with TCPIP
$!
$ ENDIF
$!
$! Add TCP/IP type to CC definitions.
$!
$ CCDEFS = CCDEFS + ",TCPIP_TYPE_''P4'"
@@ -1031,6 +1100,7 @@ $ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
$ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP (post UCX) TCP/IP library."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.

View File

@@ -145,6 +145,9 @@ int MAIN(int argc, char **argv)
int nmin = 0, ndays = -1;
if (bio_err == NULL) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
SSL_load_error_strings();
args = argv + 1;
reqnames = sk_new_null();

View File

@@ -3,8 +3,8 @@
# This is mostly being used for generation of certificate requests.
#
RANDFILE = $ENV::HOME/.rnd
oid_file = $ENV::HOME/.oid
RANDFILE = ${ENV::HOME}/.rnd
oid_file = ${ENV::HOME}/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
@@ -29,17 +29,17 @@ default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = sys\$disk:[.demoCA # Where everything is kept
certs = $dir.certs] # Where the issued certs are kept
crl_dir = $dir.crl] # Where the issued crl are kept
database = $dir]index.txt # database index file.
new_certs_dir = $dir.newcerts] # default place for new certs.
dir = ssl$root:[000000 # Where everything is kept
certs = ${dir}.certs] # Where the issued certs are kept
crl_dir = ${dir}.certs] # Where the issued crl are kept
database = ${dir}.private]index.txt # database index file.
new_certs_dir = ${dir}.certs] # default place for new certs.
certificate = $dir]cacert.pem # The CA certificate
serial = $dir]serial. # The current serial number
crl = $dir]crl.pem # The current CRL
private_key = $dir.private]cakey.pem# The private key
RANDFILE = $dir.private].rand # private random number file
certificate = ${dir}]cacert.pem # The CA certificate
serial = ${dir}.private]serial.txt # The current serial number
crl = ${dir}]crl.pem # The current CRL
private_key = ${dir}.private]cakey.pem # The private key
RANDFILE = ${dir}.private].rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
@@ -60,8 +60,8 @@ policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
stateOrProvinceName = supplied
organizationName = supplied
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

View File

@@ -138,6 +138,18 @@ static unsigned long MS_CALLBACK hash(const void *a_void);
/* static int MS_CALLBACK cmp(FUNCTION *a,FUNCTION *b); */
static int MS_CALLBACK cmp(const void *a_void,const void *b_void);
static LHASH *prog_init(void );
#ifdef OPENSSL_SYS_VMS
#if __INITIAL_POINTER_SIZE == 64
#pragma __required_pointer_size __save
#pragma __required_pointer_size 32
#endif
typedef char ** Argv_32;
#if __INITIAL_POINTER_SIZE == 64
#pragma __required_pointer_size __restore
#endif
#endif
static int do_cmd(LHASH *prog,int argc,char *argv[]);
CONF *config=NULL;
char *default_config_file=NULL;
@@ -212,18 +224,30 @@ static void lock_dbg_cb(int mode, int type, const char *file, int line)
}
#ifdef OPENSSL_SYS_VMS
int main(int Argc, Argv_32 argv32)
#else
int main(int Argc, char *Argv[])
#endif
{
ARGS arg;
#define PROG_NAME_SIZE 16
char pname[PROG_NAME_SIZE];
#define PROG_NAME_SIZE 39
char pname[PROG_NAME_SIZE+1];
FUNCTION f,*fp;
MS_STATIC char *prompt,buf[1024],config_name[256];
int n,i,ret=0;
int argc;
char **argv,*p;
#ifdef OPENSSL_SYS_VMS
#if __INITIAL_POINTER_SIZE == 64
char **argv64;
#endif
#endif
LHASH *prog=NULL;
long errline;
int loop; /* For checking if it's first round in the OpenSSL commandline loop */
arg.data=NULL;
arg.count=0;
@@ -284,14 +308,23 @@ int main(int Argc, char *Argv[])
prog=prog_init();
/* first check the program name */
#ifdef OPENSSL_SYS_VMS
program_name(argv32[0],pname,PROG_NAME_SIZE);
#else
program_name(Argv[0],pname,PROG_NAME_SIZE);
#endif
f.name=pname;
fp=(FUNCTION *)lh_retrieve(prog,&f);
if (fp != NULL)
{
#ifdef OPENSSL_SYS_VMS
argv32[0]=pname;
ret=fp->func(Argc,argv32);
#else
Argv[0]=pname;
ret=fp->func(Argc,Argv);
#endif
goto end;
}
@@ -300,14 +333,32 @@ int main(int Argc, char *Argv[])
if (Argc != 1)
{
Argc--;
#ifdef OPENSSL_SYS_VMS
argv32++;
#if __INITIAL_POINTER_SIZE == 64
argv64=(char **)_malloc64(sizeof(char *)*Argc); /* memory allocation in 64-bit address */
for (i=0;i<Argc;i++)
{
argv64[i]=argv32[i]; /* copying 32-bit Argv to 64-bit argv*/
}
ret=do_cmd(prog,Argc,argv64);
free(argv64);
#else
ret=do_cmd(prog,Argc,argv32);
#endif
#else
Argv++;
ret=do_cmd(prog,Argc,Argv);
#endif
if (ret < 0) ret=0;
goto end;
}
/* ok, lets enter the old 'OpenSSL>' mode */
loop=0;
for (;;)
{
ret=0;
@@ -319,7 +370,14 @@ int main(int Argc, char *Argv[])
p[0]='\0';
if (i++)
prompt=">";
else prompt="OpenSSL> ";
else
if(loop == 0){ /* first round in this loop*/
prompt="OpenSSL> ";
loop++;
}
else
prompt="\nOpenSSL> ";
fputs(prompt,stdout);
fflush(stdout);
fgets(p,n,stdin);
@@ -369,6 +427,7 @@ end:
#define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands"
#define LIST_CIPHER_COMMANDS "list-cipher-commands"
static int do_cmd(LHASH *prog, int argc, char *argv[])
{
FUNCTION f,*fp;

View File

@@ -6,7 +6,15 @@
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
#
# From the instructions at http://www.free.lp.se/openssl/docs/openssl3.html#ss3.1,
# change the value of RANDFILE. Also moved definition of dir up since RANDFILE
# depends on it.
#
#RANDFILE = $ENV::HOME/.rnd
dir = SSLROOT:[000000 # Where everything is kept
RANDFILE = $dir.private]RANDFILE.;
# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
@@ -33,8 +41,12 @@ default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
#
# From the instructions at http://www.free.lp.se/openssl/docs/openssl3.html#ss3.1,
# change the value of dir.
#
#dir = sys\$disk:[.demoCA # Where everything is kept
dir = SSLROOT:[000000 # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
@@ -174,6 +186,11 @@ basicConstraints=CA:FALSE
# and for everything including object signing:
# nsCertType = client, email, objsign
#
# From the instructions at http://www.free.lp.se/openssl/docs/openssl3.html#ss3.1,
# include server in the nsCertType.
#
nsCertType = client, email, objsign, server
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

View File

@@ -16,7 +16,7 @@
#include <openssl/evp.h>
#include <openssl/rand.h>
#ifndef OPENSSL_NO_DES
# include <openssl/des_old.h>
# include <openssl/des.h>
#endif
#ifndef NO_MD5CRYPT_1
# include <openssl/evp.h>
@@ -79,6 +79,9 @@ int MAIN(int argc, char **argv)
if (bio_err == NULL)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto err;
out = BIO_new(BIO_s_file());
if (out == NULL)
goto err;
@@ -479,7 +482,7 @@ static int do_passwd(int passed_salt, char **salt_p, char **salt_malloc_p,
/* now compute password hash */
#ifndef OPENSSL_NO_DES
if (usecrypt)
hash = des_crypt(passwd, *salt_p);
hash = DES_crypt(passwd, *salt_p);
#endif
#ifndef NO_MD5CRYPT_1
if (use1 || useapr1)

View File

@@ -127,6 +127,9 @@ int MAIN(int argc, char **argv)
enc = EVP_des_ede3_cbc();
if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
args = argv + 1;
@@ -151,6 +154,11 @@ int MAIN(int argc, char **argv)
else if (!strcmp (*args, "-idea")) enc=EVP_idea_cbc();
#endif
else if (!strcmp (*args, "-des3")) enc = EVP_des_ede3_cbc();
#ifndef OPENSSL_NO_AES
else if (!strcmp(*args,"-aes128")) enc=EVP_aes_128_cbc();
else if (!strcmp(*args,"-aes192")) enc=EVP_aes_192_cbc();
else if (!strcmp(*args,"-aes256")) enc=EVP_aes_256_cbc();
#endif
else if (!strcmp (*args, "-noiter")) iter = 1;
else if (!strcmp (*args, "-maciter"))
maciter = PKCS12_DEFAULT_ITER;
@@ -279,6 +287,10 @@ int MAIN(int argc, char **argv)
BIO_printf (bio_err, "-des3 encrypt private keys with triple DES (default)\n");
#ifndef OPENSSL_NO_IDEA
BIO_printf (bio_err, "-idea encrypt private keys with idea\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
BIO_printf (bio_err, " encrypt PEM output with cbc aes\n");
#endif
BIO_printf (bio_err, "-nodes don't encrypt private keys\n");
BIO_printf (bio_err, "-noiter don't use encryption iteration\n");
@@ -767,7 +779,10 @@ int dump_certs_pkeys_bag (BIO *out, PKCS12_SAFEBAG *bag, char *pass,
print_attribs (out, bag->attrib, "Bag Attributes");
if (!(p8 = PKCS12_decrypt_skey(bag, pass, passlen)))
return 0;
if (!(pkey = EVP_PKCS82PKEY (p8))) return 0;
if (!(pkey = EVP_PKCS82PKEY (p8))) {
PKCS8_PRIV_KEY_INFO_free(p8);
return 0;
}
print_attribs (out, p8->attributes, "Key Attributes");
PKCS8_PRIV_KEY_INFO_free(p8);
PEM_write_bio_PrivateKey (out, pkey, enc, NULL, 0, NULL, pempass);

View File

@@ -83,13 +83,16 @@ int MAIN(int argc, char **argv)
int nocrypt = 0;
X509_SIG *p8;
PKCS8_PRIV_KEY_INFO *p8inf;
EVP_PKEY *pkey;
EVP_PKEY *pkey=NULL;
char pass[50], *passin = NULL, *passout = NULL, *p8pass = NULL;
int badarg = 0;
char *engine=NULL;
if (bio_err == NULL) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
informat=FORMAT_PEM;
outformat=FORMAT_PEM;
@@ -347,6 +350,7 @@ int MAIN(int argc, char **argv)
return (1);
}
end:
EVP_PKEY_free(pkey);
BIO_free_all(out);
BIO_free(in);

View File

@@ -92,6 +92,9 @@ int MAIN(int argc, char **argv)
if ((bio_err = BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err, stderr, BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto err;
badopt = 0;
i = 0;
while (!badopt && argv[++i] != NULL)

View File

@@ -181,6 +181,7 @@ int MAIN(int argc, char **argv)
unsigned long chtype = MBSTRING_ASC;
#ifndef MONOLITH
MS_STATIC char config_name[256];
long errline;
#endif
req_conf = NULL;
@@ -309,7 +310,7 @@ int MAIN(int argc, char **argv)
goto end;
}
dtmp=X509_get_pubkey(xtmp);
if ((dtmp=X509_get_pubkey(xtmp)) == NULL) goto end;
if (dtmp->type == EVP_PKEY_DSA)
dsa_params=DSAparams_dup(dtmp->pkey.dsa);
EVP_PKEY_free(dtmp);
@@ -349,7 +350,7 @@ int MAIN(int argc, char **argv)
goto end;
}
dtmp=X509_get_pubkey(xtmp);
if ((dtmp=X509_get_pubkey(xtmp)) == NULL) goto end;
if (dtmp->type == EVP_PKEY_ECDSA)
ecdsa_params = ECDSAParameters_dup(dtmp->pkey.ecdsa);
EVP_PKEY_free(dtmp);
@@ -504,6 +505,7 @@ bad:
BIO_printf(bio_err," -extensions .. specify certificate extension section (override value in config file)\n");
BIO_printf(bio_err," -reqexts .. specify request extension section (override value in config file)\n");
BIO_printf(bio_err," -utf8 input characters are UTF8 (default ASCII)\n");
BIO_printf(bio_err," -nameopt arg - various certificate name options\n");
goto end;
}
@@ -529,7 +531,7 @@ bad:
}
default_config_file=p;
config=NCONF_new(NULL);
i=NCONF_load(config, p);
i=NCONF_load(config, p, &errline);
#endif
if (template != NULL)
@@ -560,6 +562,8 @@ bad:
if (req_conf != NULL)
{
if (!load_config(bio_err, req_conf))
goto end;
p=NCONF_get_string(req_conf,NULL,"oid_file");
if (p == NULL)
ERR_clear_error();
@@ -885,19 +889,20 @@ loop:
/* Set version to V3 */
if(!X509_set_version(x509ss, 2)) goto end;
if (serial)
X509_set_serialNumber(x509ss, serial);
{
if (!X509_set_serialNumber(x509ss, serial)) goto end;
}
else
ASN1_INTEGER_set(X509_get_serialNumber(x509ss),0L);
{
if (!ASN1_INTEGER_set(X509_get_serialNumber(x509ss),0L)) goto end;
}
X509_set_issuer_name(x509ss,
X509_REQ_get_subject_name(req));
X509_gmtime_adj(X509_get_notBefore(x509ss),0);
X509_gmtime_adj(X509_get_notAfter(x509ss),
(long)60*60*24*days);
X509_set_subject_name(x509ss,
X509_REQ_get_subject_name(req));
if (!X509_set_issuer_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
if (!X509_gmtime_adj(X509_get_notBefore(x509ss),0)) goto end;
if (!X509_gmtime_adj(X509_get_notAfter(x509ss), (long)60*60*24*days)) goto end;
if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
tmppkey = X509_REQ_get_pubkey(req);
X509_set_pubkey(x509ss,tmppkey);
if (!tmppkey || !X509_set_pubkey(x509ss,tmppkey)) goto end;
EVP_PKEY_free(tmppkey);
/* Set up V3 context struct */
@@ -1199,71 +1204,29 @@ static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int attribs,
}
if(!i) goto err;
X509_REQ_set_pubkey(req,pkey);
if (!X509_REQ_set_pubkey(req,pkey)) goto err;
ret=1;
err:
return(ret);
}
/*
* subject is expected to be in the format /type0=value0/type1=value1/type2=...
* where characters may be escaped by \
*/
static int build_subject(X509_REQ *req, char *subject, unsigned long chtype)
{
X509_NAME *n = NULL;
X509_NAME *n;
int i, nid, ne_num=0;
char *ne_name = NULL;
char *ne_value = NULL;
char *tmp = NULL;
char *p[2];
char *str_list[256];
p[0] = ",/";
p[1] = "=";
n = X509_NAME_new();
tmp = strtok(subject, p[0]);
while((tmp != NULL) && (ne_num < (sizeof str_list/sizeof *str_list)))
{
char *token = tmp;
while (token[0] == ' ')
token++;
str_list[ne_num] = token;
tmp = strtok(NULL, p[0]);
ne_num++;
}
for(i = 0; i < ne_num; i++)
{
ne_name = strtok(str_list[i], p[1]);
ne_value = strtok(NULL, p[1]);
if ((nid=OBJ_txt2nid(ne_name)) == NID_undef)
{
BIO_printf(bio_err, "Subject Attribute %s has no known NID, skipped\n", ne_name);
continue;
}
if (ne_value == NULL)
{
BIO_printf(bio_err, "No value provided for Subject Attribute %s, skipped\n", ne_name);
continue;
}
if (!X509_NAME_add_entry_by_NID(n, nid, chtype, (unsigned char*)ne_value, -1,-1,0))
{
X509_NAME_free(n);
return 0;
}
}
if (!(n = do_subject(subject, chtype)))
return 0;
if (!X509_REQ_set_subject_name(req, n))
{
X509_NAME_free(n);
return 0;
}
X509_NAME_free(n);
return 1;
}

View File

@@ -79,6 +79,9 @@
* -des - encrypt output if PEM format with DES in cbc mode
* -des3 - encrypt output if PEM format
* -idea - encrypt output if PEM format
* -aes128 - encrypt output if PEM format
* -aes192 - encrypt output if PEM format
* -aes256 - encrypt output if PEM format
* -text - print a text version
* -modulus - print the RSA key modulus
* -check - verify key consistency
@@ -110,6 +113,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
infile=NULL;
outfile=NULL;
informat=FORMAT_PEM;
@@ -195,6 +201,10 @@ bad:
BIO_printf(bio_err," -des3 encrypt PEM output with ede cbc des using 168 bit key\n");
#ifndef OPENSSL_NO_IDEA
BIO_printf(bio_err," -idea encrypt PEM output with cbc idea\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf(bio_err," -aes128, -aes192, -aes256\n");
BIO_printf(bio_err," encrypt PEM output with cbc aes\n");
#endif
BIO_printf(bio_err," -text print the key in text\n");
BIO_printf(bio_err," -noout don't print key out\n");

View File

@@ -104,6 +104,9 @@ int MAIN(int argc, char **argv)
argv++;
if(!bio_err) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
ERR_load_crypto_strings();
OpenSSL_add_all_algorithms();
pad = RSA_PKCS1_PADDING;

View File

@@ -239,16 +239,18 @@ long MS_CALLBACK bio_dump_cb(BIO *bio, int cmd, const char *argp, int argi,
if (cmd == (BIO_CB_READ|BIO_CB_RETURN))
{
BIO_printf(out,"read from %08X [%08lX] (%d bytes => %ld (0x%X))\n",
BIO_printf(out,"read from %08X [%08lX] (%d bytes => %ld (0x%X))\n\n",
bio,argp,argi,ret,ret);
BIO_dump(out,argp,(int)ret);
BIO_printf(out,"\n");
return(ret);
}
else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
{
BIO_printf(out,"write to %08X [%08lX] (%d bytes => %ld (0x%X))\n",
BIO_printf(out,"write to %08X [%08lX] (%d bytes => %ld (0x%X))\n\n",
bio,argp,argi,ret,ret);
BIO_dump(out,argp,(int)ret);
BIO_printf(out,"\n");
}
return(ret);
}
@@ -266,7 +268,7 @@ void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret)
if (where & SSL_CB_LOOP)
{
BIO_printf(bio_err,"%s:%s\n",str,SSL_state_string_long(s));
BIO_printf(bio_err,"%s:%s\n\n",str,SSL_state_string_long(s));
}
else if (where & SSL_CB_ALERT)
{

View File

@@ -141,6 +141,10 @@ typedef unsigned int u_int;
#endif
#ifdef OPENSSL_SYS_VMS
#include "term_sock.h"
#endif
#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
#undef FIONBIO
@@ -251,6 +255,10 @@ int MAIN(int argc, char **argv)
#ifdef OPENSSL_SYS_WINDOWS
struct timeval tv;
#endif
#ifdef OPENSSL_SYS_VMS
int stdin_sock;
TerminalSocket (TERM_SOCK_CREATE, &stdin_sock);
#endif
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
meth=SSLv23_client_method();
@@ -271,6 +279,9 @@ int MAIN(int argc, char **argv)
if (bio_err == NULL)
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
if ( ((cbuf=OPENSSL_malloc(BUFSIZZ)) == NULL) ||
((sbuf=OPENSSL_malloc(BUFSIZZ)) == NULL) ||
((mbuf=OPENSSL_malloc(BUFSIZZ)) == NULL))
@@ -433,10 +444,10 @@ bad:
if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL
&& !RAND_status())
{
BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n");
BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n\n");
}
if (inrand != NULL)
BIO_printf(bio_err,"%ld semi-random bytes loaded\n",
BIO_printf(bio_err,"%ld semi-random bytes loaded\n\n",
app_RAND_load_files(inrand));
if (bio_c_out == NULL)
@@ -513,7 +524,7 @@ re_start:
SHUTDOWN(s);
goto end;
}
BIO_printf(bio_c_out,"CONNECTED(%08X)\n",s);
BIO_printf(bio_c_out,"CONNECTED(%08X)\n\n",s);
#ifdef FIONBIO
if (c_nbio)
@@ -554,6 +565,11 @@ re_start:
SSL_set_connect_state(con);
/* ok, lets connect */
#ifdef OPENSSL_SYS_VMS
if (stdin_sock > SSL_get_fd(con))
width=stdin_sock+1;
else
#endif
width=SSL_get_fd(con)+1;
read_tty=1;
@@ -620,8 +636,12 @@ re_start:
#ifndef OPENSSL_SYS_WINDOWS
if (tty_on)
{
if (read_tty) FD_SET(fileno(stdin),&readfds);
if (write_tty) FD_SET(fileno(stdout),&writefds);
#ifdef OPENSSL_SYS_VMS
if (read_tty) FD_SET(stdin_sock,&readfds);
#else
if (read_tty) FD_SET(fileno(stdin),&readfds);
if (write_tty) FD_SET(fileno(stdout),&writefds);
#endif
}
if (read_ssl)
FD_SET(SSL_get_fd(con),&readfds);
@@ -743,7 +763,7 @@ re_start:
goto shut;
}
}
#ifdef OPENSSL_SYS_WINDOWS
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_VMS)
/* Assume Windows can always write */
else if (!ssl_pending && write_tty)
#else
@@ -802,7 +822,7 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
read_tty=0;
break;
case SSL_ERROR_WANT_READ:
BIO_printf(bio_c_out,"read R BLOCK\n");
BIO_printf(bio_c_out,"read R BLOCK\n\n");
write_tty=0;
read_ssl=1;
if ((read_tty == 0) && (write_ssl == 0))
@@ -827,14 +847,22 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
#ifdef OPENSSL_SYS_WINDOWS
else if ((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)))
#else
else if (FD_ISSET(fileno(stdin),&readfds))
#ifdef OPENSSL_SYS_VMS
else if (FD_ISSET(stdin_sock,&readfds))
#else
else if (FD_ISSET(fileno(stdin),&readfds))
#endif
#endif
{
if (crlf)
{
int j, lf_num;
i=read(fileno(stdin),cbuf,BUFSIZZ/2);
#ifdef OPENSSL_SYS_VMS
i=recv(stdin_sock,cbuf,BUFSIZZ/2,0);
#else
i=read(fileno(stdin),cbuf,BUFSIZZ/2);
#endif
lf_num = 0;
/* both loops are skipped when i <= 0 */
for (j = 0; j < i; j++)
@@ -853,7 +881,11 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
assert(lf_num == 0);
}
else
i=read(fileno(stdin),cbuf,BUFSIZZ);
#ifdef OPENSSL_SYS_VMS
i=recv(stdin_sock,cbuf,BUFSIZZ,0);
#else
i=read(fileno(stdin),cbuf,BUFSIZZ);
#endif
if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q')))
{
@@ -898,6 +930,9 @@ end:
bio_c_out=NULL;
}
apps_shutdown();
#ifdef OPENSSL_SYS_VMS
TerminalSocket (TERM_SOCK_DELETE, &stdin_sock);
#endif
EXIT(ret);
}
@@ -931,7 +966,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
BIO_printf(bio,"%2d s:%s\n",i,buf);
X509_NAME_oneline(X509_get_issuer_name(
sk_X509_value(sk,i)),buf,BUFSIZ);
BIO_printf(bio," i:%s\n",buf);
BIO_printf(bio," i:%s\n\n",buf);
if (c_showcerts)
PEM_write_bio_X509(bio,sk_X509_value(sk,i));
}
@@ -1005,7 +1040,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
}
BIO_printf(bio,((s->hit)?"---\nReused, ":"---\nNew, "));
c=SSL_get_current_cipher(s);
BIO_printf(bio,"%s, Cipher is %s\n",
BIO_printf(bio,"%s, Cipher is %s\n\n",
SSL_CIPHER_get_version(c),
SSL_CIPHER_get_name(c));
if (peer != NULL) {
@@ -1016,7 +1051,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
EVP_PKEY_free(pktmp);
}
SSL_SESSION_print(bio,SSL_get_session(s));
BIO_printf(bio,"---\n");
BIO_printf(bio,"---\n\n");
if (peer != NULL)
X509_free(peer);
/* flush, or debugging output gets mixed with http response */

View File

@@ -144,6 +144,10 @@ typedef unsigned int u_int;
#include <conio.h>
#endif
#ifdef OPENSSL_SYS_VMS
#include "term_sock.h"
#endif
#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
#undef FIONBIO
@@ -504,6 +508,9 @@ int MAIN(int argc, char *argv[])
if (bio_err == NULL)
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
verify_depth=0;
#ifdef FIONBIO
s_nbio=0;
@@ -824,7 +831,7 @@ bad:
goto end;
}
RSA_free(rsa);
BIO_printf(bio_s_out,"\n");
BIO_printf(bio_s_out,"\n\n");
}
#endif
#endif
@@ -880,7 +887,7 @@ static void print_stats(BIO *bio, SSL_CTX *ssl_ctx)
BIO_printf(bio,"%4d session cache misses\n",SSL_CTX_sess_misses(ssl_ctx));
BIO_printf(bio,"%4d session cache timeouts\n",SSL_CTX_sess_timeouts(ssl_ctx));
BIO_printf(bio,"%4d callback cache hits\n",SSL_CTX_sess_cb_hits(ssl_ctx));
BIO_printf(bio,"%4d cache full overflows (%d allowed)\n",
BIO_printf(bio,"%4d cache full overflows (%d allowed)\n\n",
SSL_CTX_sess_cache_full(ssl_ctx),
SSL_CTX_sess_get_cache_size(ssl_ctx));
}
@@ -897,7 +904,12 @@ static int sv_body(char *hostname, int s, unsigned char *context)
#ifdef OPENSSL_SYS_WINDOWS
struct timeval tv;
#endif
#ifdef OPENSSL_SYS_VMS
int stdin_sock;
TerminalSocket (TERM_SOCK_CREATE, &stdin_sock);
#endif
if ((buf=OPENSSL_malloc(bufsize)) == NULL)
{
BIO_printf(bio_err,"out of memory\n");
@@ -956,7 +968,12 @@ static int sv_body(char *hostname, int s, unsigned char *context)
SSL_set_msg_callback_arg(con, bio_s_out);
}
width=s+1;
#ifdef OPENSSL_SYS_VMS
if (stdin_sock > s)
width = stdin_sock + 1;
else
#endif
width=s+1;
for (;;)
{
int read_from_terminal;
@@ -969,7 +986,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
{
FD_ZERO(&readfds);
#ifndef OPENSSL_SYS_WINDOWS
#ifdef OPENSSL_SYS_VMS
FD_SET(stdin_sock,&readfds);
#else
FD_SET(fileno(stdin),&readfds);
#endif
#endif
FD_SET(s,&readfds);
/* Note: under VMS with SOCKETSHR the second parameter is
@@ -993,8 +1014,12 @@ static int sv_body(char *hostname, int s, unsigned char *context)
#else
i=select(width,(void *)&readfds,NULL,NULL,NULL);
if (i <= 0) continue;
if (FD_ISSET(fileno(stdin),&readfds))
read_from_terminal = 1;
#ifdef OPENSSL_SYS_VMS
if (FD_ISSET(stdin_sock,&readfds))
#else
if (FD_ISSET(fileno(stdin),&readfds))
#endif
read_from_terminal = 1;
#endif
if (FD_ISSET(s,&readfds))
read_from_sslcon = 1;
@@ -1005,7 +1030,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
{
int j, lf_num;
i=read(fileno(stdin), buf, bufsize/2);
#ifdef OPENSSL_SYS_VMS
i=recv(stdin_sock, buf, bufsize/2, 0);
#else
i=read(fileno(stdin), buf, bufsize/2);
#endif
lf_num = 0;
/* both loops are skipped when i <= 0 */
for (j = 0; j < i; j++)
@@ -1024,7 +1053,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
assert(lf_num == 0);
}
else
i=read(fileno(stdin),buf,bufsize);
#ifdef OPENSSL_SYS_VMS
i=recv(stdin_sock,buf,bufsize, 0);
#else
i=read(fileno(stdin),buf,bufsize);
#endif
if (!s_quiet)
{
if ((i <= 0) || (buf[0] == 'Q'))
@@ -1093,7 +1126,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
case SSL_ERROR_WANT_WRITE:
case SSL_ERROR_WANT_READ:
case SSL_ERROR_WANT_X509_LOOKUP:
BIO_printf(bio_s_out,"Write BLOCK\n");
BIO_printf(bio_s_out,"Write BLOCK\n\n");
break;
case SSL_ERROR_SYSCALL:
case SSL_ERROR_SSL:
@@ -1103,7 +1136,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
goto err;
/* break; */
case SSL_ERROR_ZERO_RETURN:
BIO_printf(bio_s_out,"DONE\n");
BIO_printf(bio_s_out,"DONE\n\n");
ret=1;
goto err;
}
@@ -1141,12 +1174,13 @@ again:
#endif
write(fileno(stdout),buf,
(unsigned int)i);
BIO_printf(bio_s_out,"\n");
if (SSL_pending(con)) goto again;
break;
case SSL_ERROR_WANT_WRITE:
case SSL_ERROR_WANT_READ:
case SSL_ERROR_WANT_X509_LOOKUP:
BIO_printf(bio_s_out,"Read BLOCK\n");
BIO_printf(bio_s_out,"Read BLOCK\n\n");
break;
case SSL_ERROR_SYSCALL:
case SSL_ERROR_SSL:
@@ -1178,6 +1212,9 @@ err:
}
if (ret >= 0)
BIO_printf(bio_s_out,"ACCEPT\n");
#ifdef OPENSSL_SYS_VMS
TerminalSocket (TERM_SOCK_DELETE, &stdin_sock);
#endif
return(ret);
}
@@ -1235,7 +1272,7 @@ static int init_ssl_connection(SSL *con)
if (SSL_get_shared_ciphers(con,buf,BUFSIZ) != NULL)
BIO_printf(bio_s_out,"Shared ciphers:%s\n",buf);
str=SSL_CIPHER_get_name(SSL_get_current_cipher(con));
BIO_printf(bio_s_out,"CIPHER is %s\n",(str != NULL)?str:"(NONE)");
BIO_printf(bio_s_out,"CIPHER is %s\n\n",(str != NULL)?str:"(NONE)");
if (con->hit) BIO_printf(bio_s_out,"Reused session-id\n");
if (SSL_ctrl(con,SSL_CTRL_GET_FLAGS,0,NULL) &
TLS1_FLAGS_TLS_PADDING_BUG)
@@ -1391,7 +1428,7 @@ static int www_body(char *hostname, int s, unsigned char *context)
}
else
{
BIO_printf(bio_s_out,"read R BLOCK\n");
BIO_printf(bio_s_out,"read R BLOCK\n\n");
#ifndef OPENSSL_SYS_MSDOS
sleep(1);
#endif
@@ -1617,7 +1654,7 @@ static int www_body(char *hostname, int s, unsigned char *context)
goto write_error;
else
{
BIO_printf(bio_s_out,"rwrite W BLOCK\n");
BIO_printf(bio_s_out,"rwrite W BLOCK\n\n");
}
}
else

View File

@@ -109,6 +109,15 @@ int MAIN(int argc, char **argv)
args = argv + 1;
ret = 1;
apps_startup();
if (bio_err == NULL)
if ((bio_err = BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err, stderr, BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
while (!badarg && *args && *args[0] == '-') {
if (!strcmp (*args, "-encrypt")) operation = SMIME_ENCRYPT;
else if (!strcmp (*args, "-decrypt")) operation = SMIME_DECRYPT;
@@ -128,6 +137,14 @@ int MAIN(int argc, char **argv)
cipher = EVP_rc2_cbc();
else if (!strcmp (*args, "-rc2-64"))
cipher = EVP_rc2_64_cbc();
#endif
#ifndef OPENSSL_NO_AES
else if (!strcmp(*args,"-aes128"))
cipher = EVP_aes_128_cbc();
else if (!strcmp(*args,"-aes192"))
cipher = EVP_aes_192_cbc();
else if (!strcmp(*args,"-aes256"))
cipher = EVP_aes_256_cbc();
#endif
else if (!strcmp (*args, "-text"))
flags |= PKCS7_TEXT;
@@ -283,6 +300,10 @@ int MAIN(int argc, char **argv)
BIO_printf (bio_err, "-rc2-40 encrypt with RC2-40 (default)\n");
BIO_printf (bio_err, "-rc2-64 encrypt with RC2-64\n");
BIO_printf (bio_err, "-rc2-128 encrypt with RC2-128\n");
#endif
#ifndef OPENSSL_NO_AES
BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
BIO_printf (bio_err, " encrypt PEM output with cbc aes\n");
#endif
BIO_printf (bio_err, "-nointern don't search certificates in message for signer\n");
BIO_printf (bio_err, "-nosigs don't verify message signature\n");
@@ -450,7 +471,10 @@ int MAIN(int argc, char **argv)
p7 = PKCS7_encrypt(encerts, in, cipher, flags);
} else if(operation == SMIME_SIGN) {
p7 = PKCS7_sign(signer, key, other, in, flags);
BIO_reset(in);
if (BIO_reset(in) != 0 && (flags & PKCS7_DETACHED)) {
BIO_printf(bio_err, "Can't rewind input file\n");
goto end;
}
} else {
if(informat == FORMAT_SMIME)
p7 = SMIME_read_PKCS7(in, &indata);
@@ -490,9 +514,9 @@ int MAIN(int argc, char **argv)
} else if(operation == SMIME_VERIFY) {
STACK_OF(X509) *signers;
if(PKCS7_verify(p7, other, store, indata, out, flags)) {
BIO_printf(bio_err, "Verification Successful\n");
BIO_printf(bio_err, "Verification successful\n");
} else {
BIO_printf(bio_err, "Verification Failure\n");
BIO_printf(bio_err, "Verification failure\n");
goto end;
}
signers = PKCS7_get0_signers(p7, other, flags);

View File

@@ -131,7 +131,7 @@
#endif
#ifndef OPENSSL_NO_DES
#include <openssl/des_old.h>
#include <openssl/des.h>
#endif
#ifndef OPENSSL_NO_AES
#include <openssl/aes.h>
@@ -374,9 +374,11 @@ int MAIN(int argc, char **argv)
int mret=1;
long count=0,save_count=0;
int i,j,k;
#if !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_DSA)
long rsa_count;
#endif
#ifndef OPENSSL_NO_RSA
unsigned rsa_num;
long rsa_count;
#endif
unsigned char md[EVP_MAX_MD_SIZE];
#ifndef OPENSSL_NO_MD2
@@ -437,9 +439,9 @@ int MAIN(int argc, char **argv)
unsigned char iv[MAX_BLOCK_SIZE/8];
#ifndef OPENSSL_NO_DES
DES_cblock *buf_as_des_cblock = NULL;
static des_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
static des_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
static des_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
DES_key_schedule sch;
DES_key_schedule sch2;
DES_key_schedule sch3;
@@ -515,6 +517,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
#ifndef OPENSSL_NO_RSA
memset(rsa_key,0,sizeof(rsa_key));
for (i=0; i<RSA_NUM; i++)
@@ -527,7 +532,7 @@ int MAIN(int argc, char **argv)
goto end;
}
#ifndef OPENSSL_NO_DES
buf_as_des_cblock = (des_cblock *)buf;
buf_as_des_cblock = (DES_cblock *)buf;
#endif
if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
{
@@ -1136,7 +1141,7 @@ int MAIN(int argc, char **argv)
HMAC_CTX_init(&hctx);
HMAC_Init_ex(&hctx,(unsigned char *)"This is a key...",
16,EVP_md5());
16,EVP_md5(), NULL);
for (j=0; j<SIZE_NUM; j++)
{
@@ -1144,9 +1149,9 @@ int MAIN(int argc, char **argv)
Time_F(START);
for (count=0,run=1; COND(c[D_HMAC][j]); count++)
{
HMAC_Init_ex(&hctx,NULL,0,NULL);
HMAC_Update(&hctx,buf,lengths[j]);
HMAC_Final(&hctx,&(hmac[0]),NULL);
HMAC_Init_ex(&hctx,NULL,0,NULL,NULL);
HMAC_Update(&hctx,buf,lengths[j]);
HMAC_Final(&hctx,&(hmac[0]),NULL);
}
d=Time_F(STOP);
print_result(D_HMAC,j,count,d);
@@ -1598,7 +1603,7 @@ show_res:
printf("%s ",RC4_options());
#endif
#ifndef OPENSSL_NO_DES
printf("%s ",des_options());
printf("%s ",DES_options());
#endif
#ifndef OPENSSL_NO_AES
printf("%s ",AES_options());
@@ -1622,7 +1627,7 @@ show_res:
#endif
#ifdef HZ
#define as_string(s) (#s)
printf("HZ=%g", HZ);
printf("HZ=%g", (double)HZ);
# ifdef _SC_CLK_TCK
printf(" [sysconf value]");
# endif

View File

@@ -98,6 +98,9 @@ int MAIN(int argc, char **argv)
if (!bio_err) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
prog=argv[0];
argc--;
argv++;

581
apps/term_sock.c Normal file
View File

@@ -0,0 +1,581 @@
#ifdef VMS
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <inet.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <starlet.h>
#include <iodef.h>
#ifdef __alpha
#include <iosbdef.h>
#else
typedef struct _iosb { /* Copied from IOSBDEF.H for Alpha */
#pragma __nomember_alignment
__union {
__struct {
unsigned short int iosb$w_status; /* Final I/O status */
__union {
__struct { /* 16-bit byte count variant */
unsigned short int iosb$w_bcnt; /* 16-bit byte count */
__union {
unsigned int iosb$l_dev_depend; /* 32-bit device dependent info */
unsigned int iosb$l_pid; /* 32-bit pid */
} iosb$r_l;
} iosb$r_bcnt_16;
__struct { /* 32-bit byte count variant */
unsigned int iosb$l_bcnt; /* 32-bit byte count (unaligned) */
unsigned short int iosb$w_dev_depend_high; /* 16-bit device dependent info */
} iosb$r_bcnt_32;
} iosb$r_devdepend;
} iosb$r_io_64;
__struct {
__union {
unsigned int iosb$l_getxxi_status; /* Final GETxxI status */
unsigned int iosb$l_reg_status; /* Final $Registry status */
} iosb$r_l_status;
unsigned int iosb$l_reserved; /* Reserved field */
} iosb$r_get_64;
} iosb$r_io_get;
} IOSB;
#if !defined(__VAXC)
#define iosb$w_status iosb$r_io_get.iosb$r_io_64.iosb$w_status
#define iosb$w_bcnt iosb$r_io_get.iosb$r_io_64.iosb$r_devdepend.iosb$r_bcnt_16.iosb$w_bcnt
#define iosb$r_l iosb$r_io_get.iosb$r_io_64.iosb$r_devdepend.iosb$r_bcnt_16.iosb$r_l
#define iosb$l_dev_depend iosb$r_l.iosb$l_dev_depend
#define iosb$l_pid iosb$r_l.iosb$l_pid
#define iosb$l_bcnt iosb$r_io_get.iosb$r_io_64.iosb$r_devdepend.iosb$r_bcnt_32.iosb$l_bcnt
#define iosb$w_dev_depend_high iosb$r_io_get.iosb$r_io_64.iosb$r_devdepend.iosb$r_bcnt_32.iosb$w_dev_depend_high
#define iosb$l_getxxi_status iosb$r_io_get.iosb$r_get_64.iosb$r_l_status.iosb$l_getxxi_status
#define iosb$l_reg_status iosb$r_io_get.iosb$r_get_64.iosb$r_l_status.iosb$l_reg_status
#endif /* #if !defined(__VAXC) */
#endif /* End of IOSBDEF */
#include <efndef.h>
#include <stdlib.h>
#include <ssdef.h>
#include <time.h>
#include <stdarg.h>
#include <descrip.h>
#include "term_sock.h"
#ifdef __alpha
static struct _iosb TerminalDeviceIosb;
#else
IOSB TerminalDeviceIosb;
#endif
static char TerminalDeviceBuff[255 + 2];
static int TerminalSocketPair[2] = {0, 0};
static unsigned short TerminalDeviceChan = 0;
static int CreateSocketPair (int, int, int, int *);
static void SocketPairTimeoutAst (int);
static int TerminalDeviceAst (int);
static void LogMessage (char *, ...);
/*
** Socket Pair Timeout Value (must be 0-59 seconds)
*/
#define SOCKET_PAIR_TIMEOUT_VALUE 20
/*
** Socket Pair Timeout Block which is passed to timeout AST
*/
typedef struct _SocketPairTimeoutBlock {
unsigned short SockChan1;
unsigned short SockChan2;
} SPTB;
#ifdef TERM_SOCK_TEST
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
int main (int argc, char *argv[], char *envp[])
{
char TermBuff[80];
int TermSock,
status,
len;
LogMessage ("Enter 'q' or 'Q' to quit ...");
while (strcasecmp (TermBuff, "Q"))
{
/*
** Create the terminal socket
*/
status = TerminalSocket (TERM_SOCK_CREATE, &TermSock);
if (status != TERM_SOCK_SUCCESS)
exit (1);
/*
** Process the terminal input
*/
LogMessage ("Waiting on terminal I/O ...\n");
len = recv (TermSock, TermBuff, sizeof (TermBuff), 0) ;
TermBuff[len] = '\0';
LogMessage ("Received terminal I/O [%s]", TermBuff);
/*
** Delete the terminal socket
*/
status = TerminalSocket (TERM_SOCK_DELETE, &TermSock);
if (status != TERM_SOCK_SUCCESS)
exit (1);
}
return 1;
}
#endif
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
int TerminalSocket (int FunctionCode, int *ReturnSocket)
{
int status;
$DESCRIPTOR (TerminalDeviceDesc, "SYS$COMMAND");
/*
** Process the requested function code
*/
switch (FunctionCode)
{
case TERM_SOCK_CREATE:
/*
** Create a socket pair
*/
status = CreateSocketPair (AF_INET, SOCK_STREAM, 0, TerminalSocketPair);
if (status == -1)
{
LogMessage ("TerminalSocket: CreateSocketPair () - %08X", status);
if (TerminalSocketPair[0])
close (TerminalSocketPair[0]);
if (TerminalSocketPair[1])
close (TerminalSocketPair[1]);
return (TERM_SOCK_FAILURE);
}
/*
** Assign a channel to the terminal device
*/
status = sys$assign (&TerminalDeviceDesc,
&TerminalDeviceChan,
0, 0, 0);
if (! (status & 1))
{
LogMessage ("TerminalSocket: SYS$ASSIGN () - %08X", status);
close (TerminalSocketPair[0]);
close (TerminalSocketPair[1]);
return (TERM_SOCK_FAILURE);
}
/*
** Queue an async IO to the terminal device
*/
status = sys$qio (EFN$C_ENF,
TerminalDeviceChan,
IO$_READVBLK,
&TerminalDeviceIosb,
TerminalDeviceAst,
0,
TerminalDeviceBuff,
sizeof (TerminalDeviceBuff) - 2,
0, 0, 0, 0);
if (! (status & 1))
{
LogMessage ("TerminalSocket: SYS$QIO () - %08X", status);
close (TerminalSocketPair[0]);
close (TerminalSocketPair[1]);
return (TERM_SOCK_FAILURE);
}
/*
** Return the input side of the socket pair
*/
*ReturnSocket = TerminalSocketPair[1];
break;
case TERM_SOCK_DELETE:
/*
** Cancel any pending IO on the terminal channel
*/
status = sys$cancel (TerminalDeviceChan);
if (! (status & 1))
{
LogMessage ("TerminalSocket: SYS$CANCEL () - %08X", status);
close (TerminalSocketPair[0]);
close (TerminalSocketPair[1]);
return (TERM_SOCK_FAILURE);
}
/*
** Deassign the terminal channel
*/
status = sys$dassgn (TerminalDeviceChan);
if (! (status & 1))
{
LogMessage ("TerminalSocket: SYS$DASSGN () - %08X", status);
close (TerminalSocketPair[0]);
close (TerminalSocketPair[1]);
return (TERM_SOCK_FAILURE);
}
/*
** Close the terminal socket pair
*/
close (TerminalSocketPair[0]);
close (TerminalSocketPair[1]);
/*
** Return the initialized socket
*/
*ReturnSocket = 0;
break;
default:
/*
** Invalid function code
*/
LogMessage ("TerminalSocket: Invalid Function Code - %d", FunctionCode);
return (TERM_SOCK_FAILURE);
break;
}
/*
** Return success
*/
return (TERM_SOCK_SUCCESS);
}
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
static int CreateSocketPair (
int SocketFamily,
int SocketType,
int SocketProtocol,
int *SocketPair)
{
struct dsc$descriptor AscTimeDesc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL};
static const char* LocalHostAddr = {"127.0.0.1"};
unsigned short TcpAcceptChan = 0,
TcpDeviceChan = 0;
unsigned long BinTimeBuff[2];
struct sockaddr_in sin;
char AscTimeBuff[32];
short LocalHostPort;
unsigned int status,
slen;
#ifdef __alpha
struct _iosb iosb;
#else
IOSB iosb;
#endif
int SockDesc1 = 0,
SockDesc2 = 0;
SPTB sptb;
$DESCRIPTOR (TcpDeviceDesc, "TCPIP$DEVICE");
/*
** Create a socket
*/
SockDesc1 = socket (SocketFamily, SocketType, 0);
if (SockDesc1 < 0)
{
LogMessage ("CreateSocketPair: socket () - %d", errno);
return (-1);
}
/*
** Initialize the socket information
*/
slen = sizeof (sin);
memset ((char *) &sin, 0, slen);
sin.sin_family = SocketFamily;
sin.sin_addr.s_addr = inet_addr (LocalHostAddr);
sin.sin_port = 0;
/*
** Bind the socket to the local IP
*/
status = bind (SockDesc1, (struct sockaddr *) &sin, slen);
if (status < 0)
{
LogMessage ("CreateSocketPair: bind () - %d", errno);
close (SockDesc1);
return (-1);
}
/*
** Get the socket name so we can save the port number
*/
status = getsockname (SockDesc1, (struct sockaddr *) &sin, &slen);
if (status < 0)
{
LogMessage ("CreateSocketPair: getsockname () - %d", errno);
close (SockDesc1);
return (-1);
}
else
LocalHostPort = sin.sin_port;
/*
** Setup a listen for the socket
*/
listen (SockDesc1, 5);
/*
** Get the binary (64-bit) time of the specified timeout value
*/
sprintf (AscTimeBuff, "0 0:0:%02d.00", SOCKET_PAIR_TIMEOUT_VALUE);
AscTimeDesc.dsc$w_length = strlen (AscTimeBuff);
AscTimeDesc.dsc$a_pointer = AscTimeBuff;
status = sys$bintim (&AscTimeDesc, BinTimeBuff);
if (! (status & 1))
{
LogMessage ("CreateSocketPair: SYS$BINTIM () - %08X", status);
close (SockDesc1);
return (-1);
}
/*
** Assign another channel to the TCP/IP device for the accept.
** This is the channel that ends up being connected to.
*/
status = sys$assign (&TcpDeviceDesc, &TcpDeviceChan, 0, 0, 0);
if (! (status & 1))
{
LogMessage ("CreateSocketPair: SYS$ASSIGN () - %08X", status);
close (SockDesc1);
return (-1);
}
/*
** Get the channel of the first socket for the accept
*/
TcpAcceptChan = decc$get_sdc (SockDesc1);
/*
** Perform the accept using $QIO so we can do this asynchronously
*/
status = sys$qio (EFN$C_ENF,
TcpAcceptChan,
IO$_ACCESS | IO$M_ACCEPT,
&iosb,
0, 0, 0, 0, 0,
&TcpDeviceChan,
0, 0);
if (! (status & 1))
{
LogMessage ("CreateSocketPair: SYS$QIO () - %08X", status);
close (SockDesc1);
sys$dassgn (TcpDeviceChan);
return (-1);
}
/*
** Create the second socket to do the connect
*/
SockDesc2 = socket (SocketFamily, SocketType, 0);
if (SockDesc2 < 0)
{
LogMessage ("CreateSocketPair: socket () - %d", errno);
sys$cancel (TcpAcceptChan);
close (SockDesc1);
sys$dassgn (TcpDeviceChan);
return (-1) ;
}
/*
** Setup the Socket Pair Timeout Block
*/
sptb.SockChan1 = TcpAcceptChan;
sptb.SockChan2 = decc$get_sdc (SockDesc2);
/*
** Before we block on the connect, set a timer that can cancel I/O on our two
** sockets if it never connects.
*/
status = sys$setimr (EFN$C_ENF,
BinTimeBuff,
SocketPairTimeoutAst,
&sptb,
0);
if (! (status & 1))
{
LogMessage ("CreateSocketPair: SYS$SETIMR () - %08X", status);
sys$cancel (TcpAcceptChan);
close (SockDesc1);
close (SockDesc2);
sys$dassgn (TcpDeviceChan);
return (-1);
}
/*
** Now issue the connect
*/
memset ((char *) &sin, 0, sizeof (sin)) ;
sin.sin_family = SocketFamily;
sin.sin_addr.s_addr = inet_addr (LocalHostAddr) ;
sin.sin_port = LocalHostPort ;
status = connect (SockDesc2, (struct sockaddr *) &sin, sizeof (sin));
if (status < 0 )
{
LogMessage ("CreateSocketPair: connect () - %d", errno);
sys$cantim (&sptb, 0);
sys$cancel (TcpAcceptChan);
close (SockDesc1);
close (SockDesc2);
sys$dassgn (TcpDeviceChan);
return (-1);
}
/*
** Wait for the asynch $QIO to finish. Note that if the I/O was aborted
** (SS$_ABORT), then we probably canceled it from the AST routine - so log a
** timeout.
*/
status = sys$synch (EFN$C_ENF, &iosb);
if (! (iosb.iosb$w_status & 1))
{
if (iosb.iosb$w_status == SS$_ABORT)
LogMessage ("CreateSocketPair: SYS$QIO(iosb) timeout");
else
{
LogMessage ("CreateSocketPair: SYS$QIO(iosb) - %d", iosb.iosb$w_status);
sys$cantim (&sptb, 0);
}
close (SockDesc1);
close (SockDesc2);
sys$dassgn (TcpDeviceChan);
return (-1);
}
/*
** Here we're successfully connected, so cancel the timer, convert the I/O
** channel to a socket fd, close the listener socket and return the connected
** pair.
*/
sys$cantim (&sptb, 0);
close (SockDesc1) ;
SocketPair[0] = SockDesc2 ;
SocketPair[1] = socket_fd (TcpDeviceChan);
return (0) ;
}
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
static void SocketPairTimeoutAst (int astparm)
{
SPTB *sptb = (SPTB *) astparm;
sys$cancel (sptb->SockChan2); /* Cancel the connect() */
sys$cancel (sptb->SockChan1); /* Cancel the accept() */
return;
}
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
static int TerminalDeviceAst (int astparm)
{
int status;
/*
** Terminate the terminal buffer
*/
TerminalDeviceBuff[TerminalDeviceIosb.iosb$w_bcnt] = '\0';
strcat (TerminalDeviceBuff, "\n");
/*
** Send the data read from the terminal device throught the socket pair
*/
send (TerminalSocketPair[0], TerminalDeviceBuff, TerminalDeviceIosb.iosb$w_bcnt + 1, 0);
/*
** Queue another async IO to the terminal device
*/
status = sys$qio (EFN$C_ENF,
TerminalDeviceChan,
IO$_READVBLK,
&TerminalDeviceIosb,
TerminalDeviceAst,
0,
TerminalDeviceBuff,
sizeof (TerminalDeviceBuff) - 1,
0, 0, 0, 0);
/*
** Return status
*/
return status;
}
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
static void LogMessage (char *msg, ...)
{
char *Month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
static unsigned int pid = 0;
va_list args;
time_t CurTime;
struct tm *LocTime;
char MsgBuff[256];
/*
** Get the process pid
*/
if (pid == 0)
pid = getpid ();
/*
** Convert the current time into local time
*/
CurTime = time (NULL);
LocTime = localtime (&CurTime);
/*
** Format the message buffer
*/
sprintf (MsgBuff, "%02d-%s-%04d %02d:%02d:%02d [%08X] %s\n",
LocTime->tm_mday, Month[LocTime->tm_mon], (LocTime->tm_year + 1900),
LocTime->tm_hour, LocTime->tm_min, LocTime->tm_sec, pid, msg);
/*
** Get any variable arguments and add them to the print of the message buffer
*/
va_start (args, msg);
vfprintf (stderr, MsgBuff, args);
va_end (args);
/*
** Flush standard error output
*/
fsync (fileno (stderr));
return;
}
#endif

21
apps/term_sock.h Normal file
View File

@@ -0,0 +1,21 @@
#ifndef TERM_SOCK_H
#define TERM_SOCK_H
/*
** Terminal Socket Function Codes
*/
#define TERM_SOCK_CREATE 1
#define TERM_SOCK_DELETE 2
/*
** Terminal Socket Status Codes
*/
#define TERM_SOCK_FAILURE 0
#define TERM_SOCK_SUCCESS 1
/*
** Terminal Socket Prototype
*/
int TerminalSocket (int FunctionCode, int *ReturnSocket);
#endif

View File

@@ -100,6 +100,9 @@ int MAIN(int argc, char **argv)
if ((bio_err=BIO_new(BIO_s_file())) != NULL)
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
if (!load_config(bio_err, NULL))
goto end;
argc--;
argv++;
for (;;)

View File

@@ -122,7 +122,7 @@
# include <openssl/rc4.h>
#endif
#ifndef OPENSSL_NO_DES
# include <openssl/des_old.h>
# include <openssl/des.h>
#endif
#ifndef OPENSSL_NO_IDEA
# include <openssl/idea.h>
@@ -186,7 +186,7 @@ int MAIN(int argc, char **argv)
printf("%s ",RC4_options());
#endif
#ifndef OPENSSL_NO_DES
printf("%s ",des_options());
printf("%s ",DES_options());
#endif
#ifndef OPENSSL_NO_IDEA
printf("%s ",idea_options());

View File

@@ -191,6 +191,9 @@ int MAIN(int argc, char **argv)
if (bio_err == NULL)
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
if (!load_config(bio_err, NULL))
goto end;
STDout=BIO_new_fp(stdout,BIO_NOCLOSE);
#ifdef OPENSSL_SYS_VMS
{

23
config
View File

@@ -344,6 +344,13 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
exit 0
;;
*"CRAY T3E")
echo "t3e-cray-unicosmk"; exit 0;
;;
*CRAY*)
echo "j90-cray-unicos"; exit 0;
;;
esac
#
@@ -510,6 +517,10 @@ EOF
${CC} -o dummy dummy.c && OUT=`./dummy ${MACHINE}`
rm dummy dummy.c
;;
ppc64-*-linux2)
#Use the standard target for PPC architecture until we create a
#special one for the 64bit architecture.
OUT="linux-ppc" ;;
ppc-*-linux2) OUT="linux-ppc" ;;
m68k-*-linux*) OUT="linux-m68k" ;;
ia64-*-linux?) OUT="linux-ia64" ;;
@@ -613,9 +624,17 @@ EOF
*86*-*-netbsd) OUT="NetBSD-x86" ;;
sun3*-*-netbsd) OUT="NetBSD-m68" ;;
*-*-netbsd) OUT="NetBSD-sparc" ;;
*86*-*-openbsd) OUT="OpenBSD-x86" ;;
alpha*-*-openbsd) OUT="OpenBSD-alpha" ;;
*86*-*-openbsd) OUT="OpenBSD-i386" ;;
m68k*-*-openbsd) OUT="OpenBSD-m68k" ;;
m88k*-*-openbsd) OUT="OpenBSD-m88k" ;;
mips*-*-openbsd) OUT="OpenBSD-mips" ;;
pmax*-*-openbsd) OUT="OpenBSD-mips" ;;
powerpc*-*-openbsd) OUT="OpenBSD-powerpc" ;;
sparc64*-*-openbsd) OUT="OpenBSD-sparc64" ;;
sparc*-*-openbsd) OUT="OpenBSD-sparc" ;;
vax*-*-openbsd) OUT="OpenBSD-vax" ;;
hppa*-*-openbsd) OUT="OpenBSD-hppa" ;;
*-*-openbsd) OUT="OpenBSD" ;;
*86*-*-bsdi4) OUT="bsdi-elf-gcc" ;;
*-*-osf) OUT="alphaold-cc" ;;
@@ -680,6 +699,8 @@ EOF
mips-sony-newsos4) OUT="newsos4-gcc" ;;
*-*-cygwin_pre1.3) OUT="Cygwin-pre1.3" ;;
*-*-cygwin) OUT="Cygwin" ;;
t3e-cray-unicosmk) OUT="cray-t3e" ;;
j90-cray-unicos) OUT="cray-j90" ;;
*) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
esac

View File

@@ -0,0 +1,259 @@
--
-- CPQ-AXPVMS-SSL-T0100--1.PCSI$DESCRIPTION
--
-- KSG00141 Kevin Greaney 21-Jun-2001
-- Using the ENCRYPT file as a template, create a
-- .PCSI$DESCRIPTION file for the OpenSSL port.
--
--
-- First, make sure we are running on correct operating system.
--
product CPQ AXPVMS SSL T1.0 full ;
if (not <software DEC AXPVMS VMS version minimum V7.2>) ;
error NOAXPVMS;
end if;
--
-- Now, perform the installation.
--
--
-- Define the SSL root logical name. This is done by
-- SSL$PCSI.COM. It defines SSL$ROOT to be the
-- equivalence name of the PCSI$DESTINATION logical when
-- installing, and deassigns the logical when removing.
execute
install "@pcsi$destination:[ssl.com]ssl$pcsi.com install"
remove "@pcsi$destination:[ssl.com]ssl$pcsi.com remove";
--
-- SSL$STARTUP.COM defines a handfull of logicals and
-- then executes SSL$SYSTARTUP.COM.
--
-- SSL$SHUTDOWN deassigns the logicals defined in the
-- startup file and then executes SSL$SYSHUTDOWN.COM
--
-- Note : If this kit is installed to a disk other than
-- the system disk, these two files will not end
-- up on the system disk. They will have to be
-- moved over manually.
execute
start "@sys$startup:ssl$startup.com"
stop "@sys$startup:ssl$shutdown.com";
--
-- Now, perform the testing, if it was requested.
--
-- Find out if the IVP should be run ...
-- Note : If the user specified /NOTEST on the command
-- line, the user will still be asked about running
-- the IVP, but no matter what they answer, the IVP
-- will NOT be run. This is because /NOTEST
-- overrides the option here.
option run_ivp default yes;
execute test "@pcsi$destination:[systest]ssl$ivp.com/output=pcsi$destination:[systest]ssl$ivp.log";
end option;
--
information POST_INSTALL phase after with helptext;
information RELEASE_NOTES phase after ;
information START_INSTRUCTION phase after ;
-- information REINSTALL_PROBLEM phase after ;
--
-- And finally, define where all the files should be placed.
--
directory [ssl] ;
file [ssl.com]ssl$pcsi.com protection private;
--
file [syshlp]ssl010.release_notes release notes;
if (<software DEC AXPVMS VMS>) ;
directory [ssl.alpha_exe] ;
file [ssl.alpha_exe]ca.com ;
file [ssl.alpha_exe]openssl.exe ;
file [ssl.alpha_exe]ssl_task.exe ;
--
end if;
if (<software DEC VAXVMS VMS>) ;
directory [ssl.vax_exe] ;
file [ssl.vax_exe]ca.com;
--
directory [ssl.vax_lib] ;
end if;
file [syslib]ssl$libssl_shr.exe ;
file [syslib]ssl$libcrypto_shr.exe ;
file [syslib]ssl$libssl_shr32.exe ;
file [syslib]ssl$libcrypto_shr32.exe ;
file [ssl.alpha_exe]ssl$hostname.exe;
file [ssl.alpha_exe]ssl$hostaddr.exe;
--
directory [ssl.conf] ;
file [ssl]openssl.cnf ;
file [ssl]openssl-vms.cnf ;
--
directory [ssl.certs] ;
--
directory [syshlp.examples.ssl] ;
file [syshlp.examples.ssl]ssl$bio_cli.c ;
file [syshlp.examples.ssl]ssl$bio_serv.c ;
file [syshlp.examples.ssl]ssl$cli_sess_renego.c ;
file [syshlp.examples.ssl]ssl$cli_sess_renego_cli_ver.c ;
file [syshlp.examples.ssl]ssl$cli_sess_reuse.c ;
file [syshlp.examples.ssl]ssl$cli_sess_reuse_cli_ver.c ;
file [syshlp.examples.ssl]ssl$cli_verify_client.c ;
file [syshlp.examples.ssl]ssl$serv_sess_renego.c ;
file [syshlp.examples.ssl]ssl$serv_sess_renego_cli_ver.c ;
file [syshlp.examples.ssl]ssl$serv_sess_reuse.c ;
file [syshlp.examples.ssl]ssl$serv_sess_reuse_cli_ver.c ;
file [syshlp.examples.ssl]ssl$serv_verify_client.c ;
file [syshlp.examples.ssl]ssl$simple_cli.c ;
file [syshlp.examples.ssl]ssl$simple_serv.c ;
file [syshlp.examples.ssl]ssl$examples_setup.com ;
--
directory [ssl.include] ;
--
file [ssl.include]asn1.h ;
file [ssl.include]asn1_mac.h;
file [ssl.include]bio.h;
file [ssl.include]blowfish.h;
file [ssl.include]bn.h;
file [ssl.include]buffer.h;
file [ssl.include]cast.h;
file [ssl.include]comp.h;
file [ssl.include]conf.h;
file [ssl.include]conf_api.h;
file [ssl.include]crypto.h;
file [ssl.include]des.h;
file [ssl.include]dh.h;
file [ssl.include]dsa.h;
file [ssl.include]dso.h;
file [ssl.include]ebcdic.h;
file [ssl.include]engine.h;
file [ssl.include]err.h;
file [ssl.include]evp.h;
file [ssl.include]e_os.h;
file [ssl.include]e_os2.h;
file [ssl.include]hmac.h;
file [ssl.include]idea.h;
file [ssl.include]lhash.h;
file [ssl.include]md2.h;
file [ssl.include]md4.h;
file [ssl.include]md5.h;
file [ssl.include]mdc2.h;
file [ssl.include]objects.h;
file [ssl.include]obj_mac.h;
file [ssl.include]opensslconf.h;
file [ssl.include]opensslv.h;
file [ssl.include]pem.h;
file [ssl.include]pem2.h;
file [ssl.include]pkcs12.h;
file [ssl.include]pkcs7.h;
file [ssl.include]rand.h;
file [ssl.include]rc2.h;
file [ssl.include]rc4.h;
file [ssl.include]rc5.h;
file [ssl.include]ripemd.h;
file [ssl.include]rsa.h;
file [ssl.include]safestack.h;
file [ssl.include]sha.h;
file [ssl.include]ssl.h;
file [ssl.include]ssl2.h;
file [ssl.include]ssl23.h;
file [ssl.include]ssl3.h;
file [ssl.include]stack.h;
file [ssl.include]symhacks.h;
file [ssl.include]tls1.h;
file [ssl.include]tmdiff.h;
file [ssl.include]txt_db.h;
file [ssl.include]x509.h;
file [ssl.include]x509v3.h;
file [ssl.include]x509_vfy.h;
--
directory [ssl.lib] ;
--
directory [ssl.private] ;
file [ssl.private]randfile.;
--
directory [ssl.test] ;
file [ssl.test]tcrl.com;
file [ssl.test]testca.com;
file [ssl.test]testenc.com;
file [ssl.test]testgen.com;
file [ssl.test]testss.com;
file [ssl.test]testssl.com;
file [ssl.test]tests_share.com;
file [ssl.test]tpkcs7.com;
file [ssl.test]tpkcs7d.com;
file [ssl.test]treq.com;
file [ssl.test]trsa.com;
file [ssl.test]tsid.com;
file [ssl.test]tverify.com;
file [ssl.test]tx509.com;
--
file [ssl.test]bftest.exe;
file [ssl.test]bntest.exe;
file [ssl.test]casttest.exe;
file [ssl.test]destest.exe;
file [ssl.test]dhtest.exe;
file [ssl.test]dsatest.exe;
file [ssl.test]exptest.exe;
file [ssl.test]hmactest.exe;
file [ssl.test]ideatest.exe;
file [ssl.test]md2test.exe;
file [ssl.test]md4test.exe;
file [ssl.test]md5test.exe;
file [ssl.test]mdc2test.exe;
file [ssl.test]randtest.exe;
file [ssl.test]rc2test.exe;
file [ssl.test]rc4test.exe;
file [ssl.test]rc5test.exe;
file [ssl.test]rmdtest.exe;
file [ssl.test]rsa_test.exe;
file [ssl.test]sha1test.exe;
file [ssl.test]shatest.exe;
file [ssl.test]ssltest.exe;
--
file [systest]ssl$ivp.com;
--
directory [ssl.com] ;
file [sys$startup]ssl$startup.com;
file [sys$startup]ssl$shutdown.com;
file [ssl.com]ssl$systartup.com;
file [ssl.com]ssl$syshutdown.com;
file [ssl.com]ssl$utils.com;
--
file [ssl.com]ssl$auth_cert.com;
file [ssl.com]ssl$auto_cert.com;
file [ssl.com]ssl$cert_tool.com;
file [ssl.com]ssl$conf_util.com;
file [ssl.com]ssl$draw_box.com;
file [ssl.com]ssl$exit_cmd.tpu;
file [ssl.com]ssl$fill_box.com;
file [ssl.com]ssl$hash_cert.com;
file [ssl.com]ssl$init_env.com;
file [ssl.com]ssl$init_term.com;
file [ssl.com]ssl$pick_file.com;
file [ssl.com]ssl$rem_env.com;
file [ssl.com]ssl$rqst_cert.com;
file [ssl.com]ssl$self_cert.com;
file [ssl.com]ssl$show_file.com;
file [ssl.com]ssl$sign_cert.com;
file [ssl.com]ssl$view_cert.com;
--
end product ;

View File

@@ -0,0 +1,82 @@
=product CPQ AXPVMS SSL T1.0 full
1 'PRODUCT
=prompt SSL for OpenVMS Alpha T1.0 (Based on OpenSSL 0.9.6B).
SSL for OpenVMS provides a toolkit that implements SSL V2/V3, TLS V1,
and a general purpose cryptography library.
1 'PRODUCER
1 'NOTICE
=prompt (c) Compaq Computer Corporation 2002. All rights reserved.
COMPAQ Registered in U.S. Patent and Trademark Office.
Confidential computer software. Valid license from Compaq or
authorized sublicensor required for possession, use or copying.
Consistent with FAR 12.211 and 12.212, Commercial Computer Software,
Computer Software Documentation, and Technical Data for Commercial
Items are licensed to the U.S. Government under vendor's standard
commercial license.
This software is installable on OpenVMS processors using the POLYCENTER
Software Installation utility.
IMPORTANT LEGAL NOTICE:
Exports of this product are subject to U.S. Export Administration
Regulations pertaining to encryption items and may require that
individual export authorization be obtained from the U.S.
Department of Commerce.
1 START_INSTRUCTION
=prompt @SYS$STARTUP:SSL$STARTUP.COM should be run at system startup.
Once the installation is complete, adding the following line to
SYS$MANAGER:SYSTARTUP_VMS.COM will define the SSL$ logicals
in the SYSTEM logical name table:
$ @SYS$STARTUP:SSL$STARTUP.COM "/SYSTEM"
It is also possible to have the logicals placed in other logical
name tables - EXEC,USER, etc - by replacing the SYSTEM parameter
above with the alternate table name.
1 RELEASE_NOTES
=prompt Refer to SYS$HELP:SSL010.RELEASE_NOTES for more information.
The SSL product release notes contain up to date information regarding
bug fixes, known problems, and general installation information.
1 RUN_IVP
=prompt Run the installation verification procedure (IVP)?
This option determines if the installation verification
procedure will be run as part of the installation. The procedure
should take few minutes to run, depending on the processor
speed. If it is not run during the installation, then it
should be run as part of the post installation procedure.
1 POST_INSTALL
=prompt There are post installation activities that need to be performed.
This includes things like defining logical names and running SSL$UTIL.COM
to define some foreign symbols, and running the IVP if it was not done
as part of the installation. Refer the to Release Notes for more
information about activities that should be performed once the installation
has finished.
SSL has created the following directory structure in
PCSI$DESTINATION, which defaults to SYS$SYSDEVICE:[VMS$COMMON]:
[SSL] -
[SSL.ALPHA_EXE] - Contains the images for the Alpha platform.
[SSL.ALPHA_LIB] - Contains the .OLBs for the Alpha platform.
[SSL.CERTS] - Directory to hold certificates
[SSL.COM] - Directory to hold the various command procedures.
[SSL.CONF] - Contains the configuration files.
[SSL.INCLUDE] - Contains the C Header (.H) files.
[SSL.PRIVATE] - Files specifically for SSL use such as RANDFILE.
[SSL.TEST] - Contains the files used during the IVP.
1 NOAXPVMS
=prompt Minimum OpenVMS Alpha software not found on system, abort installation
This kit requires a minimum OpenVMS Alpha version of V7.2.

View File

@@ -57,7 +57,7 @@ buildinf.h: ../Makefile.ssl
echo " /* auto-generated by crypto/Makefile.ssl for crypto/cversion.c */"; \
echo " #define CFLAGS \"$(CC) $(CFLAG)\""; \
echo " #define PLATFORM \"$(PLATFORM)\""; \
echo " #define DATE \"`date`\""; \
echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
echo "#endif" ) >buildinf.h
testapps:

View File

@@ -26,8 +26,8 @@ TEST=
APPS=
LIB=$(TOP)/libcrypto.a
LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c
LIBOBJ=aes_core.o aes_misc.o aes_ecb.o aes_cbc.o
LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c aes_ctr.c
LIBOBJ=aes_core.o aes_misc.o aes_ecb.o aes_cbc.o aes_cfb.o aes_ofb.o aes_ctr.o
SRC= $(LIBSRC)
@@ -54,7 +54,7 @@ files:
links:
@$(TOP)/util/point.sh Makefile.ssl Makefile
@$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
@#$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
@$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
@$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
install: installs
@@ -88,10 +88,16 @@ clean:
aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c aes_locl.h
aes_cfb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_cfb.o: ../../include/openssl/opensslconf.h aes_cfb.c aes_locl.h
aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h
aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h
aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h
aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_misc.o: ../../include/openssl/opensslconf.h
aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c
aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
aes_ofb.o: ../../include/openssl/opensslconf.h aes_locl.h aes_ofb.c

View File

@@ -1,6 +1,6 @@
/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -58,8 +58,10 @@
static const int AES_DECRYPT = 0;
static const int AES_ENCRYPT = 1;
#define AES_MAXNR 14 /* array size can't be a const in C */
static const int AES_BLOCK_SIZE = 16; /* bytes */
/* Because array size can't be a const in C, the following two are macros.
Both sizes are in bytes. */
#define AES_MAXNR 14
#define AES_BLOCK_SIZE 16
#ifdef __cplusplus
extern "C" {
@@ -74,17 +76,31 @@ typedef struct aes_key_st AES_KEY;
const char *AES_options(void);
int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
void AES_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);
void AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);
void AES_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
void AES_decrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key, const int enc);
const AES_KEY *key, const int enc);
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, const int enc);
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, const int enc);
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, int *num);
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *counter, unsigned int *num);
#ifdef __cplusplus
}

View File

@@ -1,6 +1,6 @@
/* crypto/aes/aes_cbc.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions

151
crypto/aes/aes_cfb.c Normal file
View File

@@ -0,0 +1,151 @@
/* crypto/aes/aes_cfb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <assert.h>
#include <openssl/aes.h>
#include "aes_locl.h"
/* The input and output encrypted as though 128bit cfb mode is being
* used. The extra state information to record how much of the
* 128bit block we have used is contained in *num;
*/
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc) {
unsigned int n;
unsigned long l = length;
unsigned char c;
assert(in && out && key && ivec && num);
n = *num;
if (enc) {
while (l--) {
if (n == 0) {
AES_encrypt(ivec, ivec, key);
}
ivec[n] = *(out++) = *(in++) ^ ivec[n];
n = (n+1) % AES_BLOCK_SIZE;
}
} else {
while (l--) {
if (n == 0) {
AES_decrypt(ivec, ivec, key);
}
c = *(in);
*(out++) = *(in++) ^ ivec[n];
ivec[n] = c;
n = (n+1) % AES_BLOCK_SIZE;
}
}
*num=n;
}

View File

@@ -715,16 +715,6 @@ static const u32 rcon[] = {
0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
};
#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
#ifdef _MSC_VER
#define GETU32(p) SWAP(*((u32 *)(p)))
#define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
#else
#define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
#define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); }
#endif
/**
* Expand the cipher key into the encryption key schedule.
*/

117
crypto/aes/aes_ctr.c Normal file
View File

@@ -0,0 +1,117 @@
/* crypto/aes/aes_ctr.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
#include <assert.h>
#include <openssl/aes.h>
#include "aes_locl.h"
/* NOTE: CTR mode is big-endian. The rest of the AES code
* is endian-neutral. */
/* increment counter (128-bit int) by 2^64 */
static void AES_ctr128_inc(unsigned char *counter) {
unsigned long c;
/* Grab 3rd dword of counter and increment */
#ifdef L_ENDIAN
c = GETU32(counter + 8);
c++;
PUTU32(counter + 8, c);
#else
c = GETU32(counter + 4);
c++;
PUTU32(counter + 4, c);
#endif
/* if no overflow, we're done */
if (c)
return;
/* Grab top dword of counter and increment */
#ifdef L_ENDIAN
c = GETU32(counter + 12);
c++;
PUTU32(counter + 12, c);
#else
c = GETU32(counter + 0);
c++;
PUTU32(counter + 0, c);
#endif
}
/* The input encrypted as though 128bit counter mode is being
* used. The extra state information to record how much of the
* 128bit block we have used is contained in *num;
*/
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *counter, unsigned int *num) {
unsigned int n;
unsigned long l=length;
unsigned char tmp[AES_BLOCK_SIZE];
assert(in && out && key && counter && num);
n = *num;
while (l--) {
if (n == 0) {
AES_ctr128_inc(counter);
AES_encrypt(counter, tmp, key);
}
*(out++) = *(in++) ^ tmp[n];
n = (n+1) % AES_BLOCK_SIZE;
}
*num=n;
}

View File

@@ -1,6 +1,6 @@
/* crypto/aes/aes_ecb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions

View File

@@ -1,6 +1,6 @@
/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -65,6 +65,15 @@
#include <string.h>
#endif
#ifdef _MSC_VER
# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
# define GETU32(p) SWAP(*((u32 *)(p)))
# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
#else
# define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
# define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); }
#endif
typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;

View File

@@ -1,6 +1,6 @@
/* crypto/aes/aes_misc.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions

View File

@@ -1,3 +1,53 @@
/* crypto/aes/aes_ofb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -55,42 +105,32 @@
* [including the GNU Public Licence.]
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <assert.h>
#include <openssl/aes.h>
#include "aes_locl.h"
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
/* The input and output encrypted as though 128bit ofb mode is being
* used. The extra state information to record how much of the
* 128bit block we have used is contained in *num;
*/
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
const unsigned long length, const AES_KEY *key,
unsigned char *ivec, int *num) {
#ifdef __cplusplus
unsigned int n;
unsigned long l=length;
assert(in && out && key && ivec && num);
n = *num;
while (l--) {
if (n == 0) {
AES_encrypt(ivec, ivec, key);
}
*(out++) = *(in++) ^ ivec[n];
n = (n+1) % AES_BLOCK_SIZE;
}
*num=n;
}
#endif
typedef struct datum_st {
char *dptr;
int dsize;
} datum;
#include <openssl/crypto.h>
#include <openssl/buffer.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/err.h>
#include <openssl/x509.h>
#include <openssl/ssl.h>
#ifdef DEBUG
#define pr_name(name) printf("%s\n",name)
#define pr_name_d(name,p2) printf("%s %d\n",name,p2)
#define pr_name_dd(name,p2,p3) printf("%s %d %d\n",name,p2,p3)
#else
#define pr_name(name)
#define pr_name_d(name,p2)
#define pr_name_dd(name,p2,p3)
#endif
SV *new_ref(char *type, char *obj, int mort);
int ex_new(char *obj, SV *data, CRYPTO_EX_DATA *ad, int idx, long argl, char *argp);
void ex_cleanup(char *obj, SV *data, CRYPTO_EX_DATA *ad, int idx, long argl, char *argp);

View File

@@ -55,6 +55,59 @@
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* ====================================================================
* Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#include <stdio.h>
#include <time.h>
@@ -90,7 +143,14 @@ int ASN1_sign(int (*i2d)(), X509_ALGOR *algor1, X509_ALGOR *algor2,
else
a=algor2;
if (a == NULL) continue;
if ( (a->parameter == NULL) ||
if (type->pkey_type == NID_dsaWithSHA1)
{
/* special case: RFC 2459 tells us to omit 'parameters'
* with id-dsa-with-sha1 */
ASN1_TYPE_free(a->parameter);
a->parameter = NULL;
}
else if ((a->parameter == NULL) ||
(a->parameter->type != V_ASN1_NULL))
{
ASN1_TYPE_free(a->parameter);
@@ -169,7 +229,14 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
else
a=algor2;
if (a == NULL) continue;
if ( (a->parameter == NULL) ||
if (type->pkey_type == NID_dsaWithSHA1)
{
/* special case: RFC 2459 tells us to omit 'parameters'
* with id-dsa-with-sha1 */
ASN1_TYPE_free(a->parameter);
a->parameter = NULL;
}
else if ((a->parameter == NULL) ||
(a->parameter->type != V_ASN1_NULL))
{
ASN1_TYPE_free(a->parameter);

View File

@@ -440,6 +440,8 @@ typedef const ASN1_ITEM * ASN1_ITEM_EXP(void);
DECLARE_STACK_OF(ASN1_INTEGER)
DECLARE_ASN1_SET_OF(ASN1_INTEGER)
DECLARE_STACK_OF(ASN1_GENERALSTRING)
typedef struct asn1_type_st
{
int type;
@@ -1012,6 +1014,7 @@ void ERR_load_ASN1_strings(void);
#define ASN1_F_I2D_PUBLICKEY 164
#define ASN1_F_I2D_RSA_PUBKEY 165
#define ASN1_F_LONG_C2I 166
#define ASN1_F_OID_MODULE_INIT 175
#define ASN1_F_PKCS5_PBE2_SET 167
#define ASN1_F_X509_CINF_NEW 168
#define ASN1_F_X509_CRL_ADD0_REVOKED 169
@@ -1021,6 +1024,7 @@ void ERR_load_ASN1_strings(void);
#define ASN1_F_X509_PKEY_NEW 173
/* Reason codes. */
#define ASN1_R_ADDING_OBJECT 171
#define ASN1_R_AUX_ERROR 100
#define ASN1_R_BAD_CLASS 101
#define ASN1_R_BAD_OBJECT_HEADER 102
@@ -1034,6 +1038,7 @@ void ERR_load_ASN1_strings(void);
#define ASN1_R_DECODE_ERROR 110
#define ASN1_R_DECODING_ERROR 111
#define ASN1_R_ENCODE_ERROR 112
#define ASN1_R_ERROR_LOADING_SECTION 172
#define ASN1_R_ERROR_PARSING_SET_ELEMENT 113
#define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
#define ASN1_R_EXPECTING_AN_INTEGER 115

View File

@@ -1,6 +1,6 @@
/* crypto/asn1/asn1_err.c */
/* ====================================================================
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
* Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -134,6 +134,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
{ERR_PACK(0,ASN1_F_I2D_PUBLICKEY,0), "i2d_PublicKey"},
{ERR_PACK(0,ASN1_F_I2D_RSA_PUBKEY,0), "i2d_RSA_PUBKEY"},
{ERR_PACK(0,ASN1_F_LONG_C2I,0), "LONG_C2I"},
{ERR_PACK(0,ASN1_F_OID_MODULE_INIT,0), "OID_MODULE_INIT"},
{ERR_PACK(0,ASN1_F_PKCS5_PBE2_SET,0), "PKCS5_pbe2_set"},
{ERR_PACK(0,ASN1_F_X509_CINF_NEW,0), "X509_CINF_NEW"},
{ERR_PACK(0,ASN1_F_X509_CRL_ADD0_REVOKED,0), "X509_CRL_add0_revoked"},
@@ -146,6 +147,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
static ERR_STRING_DATA ASN1_str_reasons[]=
{
{ASN1_R_ADDING_OBJECT ,"adding object"},
{ASN1_R_AUX_ERROR ,"aux error"},
{ASN1_R_BAD_CLASS ,"bad class"},
{ASN1_R_BAD_OBJECT_HEADER ,"bad object header"},
@@ -159,6 +161,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
{ASN1_R_DECODE_ERROR ,"decode error"},
{ASN1_R_DECODING_ERROR ,"decoding error"},
{ASN1_R_ENCODE_ERROR ,"encode error"},
{ASN1_R_ERROR_LOADING_SECTION ,"error loading section"},
{ASN1_R_ERROR_PARSING_SET_ELEMENT ,"error parsing set element"},
{ASN1_R_ERROR_SETTING_CIPHER_PARAMS ,"error setting cipher params"},
{ASN1_R_EXPECTING_AN_INTEGER ,"expecting an integer"},

View File

@@ -65,21 +65,31 @@
/* Simple ASN1 OID module: add all objects in a given section */
/* NOTE: doesn't do anything other than print debug messages yet... */
static int oid_module_init(CONF_IMODULE *md, const CONF *cnf)
{
fprintf(stderr, "Called oid_module_init: name %s, value %s\n",
CONF_imodule_get_name(md), CONF_imodule_get_value(md));
int i;
const char *oid_section;
STACK_OF(CONF_VALUE) *sktmp;
CONF_VALUE *oval;
oid_section = CONF_imodule_get_value(md);
if(!(sktmp = NCONF_get_section(cnf, oid_section)))
{
ASN1err(ASN1_F_OID_MODULE_INIT, ASN1_R_ERROR_LOADING_SECTION);
return 0;
}
for(i = 0; i < sk_CONF_VALUE_num(sktmp); i++)
{
oval = sk_CONF_VALUE_value(sktmp, i);
if(OBJ_create(oval->value, oval->name, oval->name) == NID_undef)
{
ASN1err(ASN1_F_OID_MODULE_INIT, ASN1_R_ADDING_OBJECT);
return 0;
}
}
return 1;
}
static void oid_module_finish(CONF_IMODULE *md)
{
fprintf(stderr, "Called oid_module_finish: name %s, value %s\n",
CONF_imodule_get_name(md), CONF_imodule_get_value(md));
}
}
void ASN1_add_oid_module(void)
{
CONF_module_add("oid_section", oid_module_init, oid_module_finish);
CONF_module_add("oid_section", oid_module_init, 0);
}

View File

@@ -113,7 +113,7 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, unsigned char **pp,
#endif
#ifndef OPENSSL_NO_ECDSA
case EVP_PKEY_ECDSA:
if ((ret->pkey.ecdsa = d2i_ECDSAPublicKey(&(ret->pkey.ecdsa),
if ((ret->pkey.ecdsa = ECDSAPublicKey_set_octet_string(&(ret->pkey.ecdsa),
(const unsigned char **)pp, length)) == NULL)
{
ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);

View File

@@ -85,7 +85,7 @@ int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp)
#endif
#ifndef OPENSSL_NO_ECDSA
case EVP_PKEY_ECDSA:
return(i2d_ECDSAPublicKey(a->pkey.ecdsa, pp));
return(ECDSAPublicKey_get_octet_string(a->pkey.ecdsa, pp));
#endif
default:
ASN1err(ASN1_F_I2D_PUBLICKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);

View File

@@ -116,6 +116,8 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
if (RAND_pseudo_bytes(iv, EVP_CIPHER_iv_length(cipher)) < 0)
goto err;
EVP_CIPHER_CTX_init(&ctx);
/* Dummy cipherinit to just setup the IV */
EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, iv, 0);
if(EVP_CIPHER_param_to_asn1(&ctx, scheme->parameter) < 0) {

View File

@@ -237,7 +237,8 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
unsigned char *buffer=NULL;
int i, buf_len=0, ret=0, reason=ERR_R_BIO_LIB;
BIGNUM *tmp_1=NULL, *tmp_2=NULL, *tmp_3=NULL,
*tmp_4=NULL, *tmp_5=NULL;
*tmp_4=NULL, *tmp_5=NULL, *tmp_6=NULL,
*tmp_7=NULL;
BN_CTX *ctx=NULL;
EC_POINT *point=NULL;
@@ -249,7 +250,8 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
goto err;
}
if ((tmp_1 = BN_new()) == NULL || (tmp_2 = BN_new()) == NULL ||
(tmp_3 = BN_new()) == NULL || (ctx = BN_CTX_new()) == NULL)
(tmp_3 = BN_new()) == NULL || (ctx = BN_CTX_new()) == NULL ||
(tmp_6 = BN_new()) == NULL || (tmp_7 = BN_new()) == NULL)
{
reason = ERR_R_MALLOC_FAILURE;
goto err;
@@ -264,7 +266,12 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
reason = ERR_R_EC_LIB;
goto err;
}
if ((buf_len = EC_POINT_point2oct(x->group, point, POINT_CONVERSION_COMPRESSED, NULL, 0, ctx)) == 0)
if (!EC_GROUP_get_order(x->group, tmp_6, NULL) || !EC_GROUP_get_cofactor(x->group, tmp_7, NULL))
{
reason = ERR_R_EC_LIB;
goto err;
}
if ((buf_len = EC_POINT_point2oct(x->group, point, ECDSA_get_conversion_form(x), NULL, 0, ctx)) == 0)
{
reason = ECDSA_R_UNEXPECTED_PARAMETER_LENGTH;
goto err;
@@ -274,14 +281,14 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
reason = ERR_R_MALLOC_FAILURE;
goto err;
}
if (!EC_POINT_point2oct(x->group, point, POINT_CONVERSION_COMPRESSED,
if (!EC_POINT_point2oct(x->group, point, ECDSA_get_conversion_form(x),
buffer, buf_len, ctx)) goto err;
if ((tmp_4 = BN_bin2bn(buffer, buf_len, NULL)) == NULL)
{
reason = ERR_R_BN_LIB;
goto err;
}
if ((i = EC_POINT_point2oct(x->group, x->pub_key, POINT_CONVERSION_COMPRESSED, NULL, 0, ctx)) == 0)
if ((i = EC_POINT_point2oct(x->group, x->pub_key, ECDSA_get_conversion_form(x), NULL, 0, ctx)) == 0)
{
reason = ECDSA_R_UNEXPECTED_PARAMETER_LENGTH;
goto err;
@@ -292,7 +299,7 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
buf_len = i;
goto err;
}
if (!EC_POINT_point2oct(x->group, x->pub_key, POINT_CONVERSION_COMPRESSED,
if (!EC_POINT_point2oct(x->group, x->pub_key, ECDSA_get_conversion_form(x),
buffer, buf_len, ctx))
{
reason = ERR_R_EC_LIB;
@@ -330,6 +337,8 @@ int ECDSA_print(BIO *bp, const ECDSA *x, int off)
if ((tmp_2 != NULL) && !print(bp, "A: ", tmp_2, buffer, off)) goto err;
if ((tmp_3 != NULL) && !print(bp, "B: ", tmp_3, buffer, off)) goto err;
if ((tmp_4 != NULL) && !print(bp, "Gen: ", tmp_4, buffer, off)) goto err;
if ((tmp_6 != NULL) && !print(bp, "Order: ", tmp_6, buffer, off)) goto err;
if ((tmp_7 != NULL) && !print(bp, "Cofactor: ", tmp_7, buffer, off)) goto err;
ret=1;
err:
if (!ret)
@@ -339,6 +348,8 @@ err:
if (tmp_3) BN_free(tmp_3);
if (tmp_4) BN_free(tmp_4);
if (tmp_5) BN_free(tmp_5);
if (tmp_6) BN_free(tmp_6);
if (tmp_7) BN_free(tmp_7);
if (ctx) BN_CTX_free(ctx);
if (buffer != NULL) OPENSSL_free(buffer);
return(ret);
@@ -519,7 +530,8 @@ int ECDSAParameters_print(BIO *bp, const ECDSA *x)
unsigned char *buffer=NULL;
int buf_len;
int reason=ERR_R_EC_LIB, i, ret=0;
BIGNUM *tmp_1=NULL, *tmp_2=NULL, *tmp_3=NULL, *tmp_4=NULL;
BIGNUM *tmp_1=NULL, *tmp_2=NULL, *tmp_3=NULL, *tmp_4=NULL,
*tmp_5=NULL, *tmp_6=NULL;
BN_CTX *ctx=NULL;
EC_POINT *point=NULL;
@@ -530,20 +542,23 @@ int ECDSAParameters_print(BIO *bp, const ECDSA *x)
goto err;
}
if ((tmp_1 = BN_new()) == NULL || (tmp_2 = BN_new()) == NULL ||
(tmp_3 = BN_new()) == NULL || (ctx = BN_CTX_new()) == NULL)
(tmp_3 = BN_new()) == NULL || (tmp_5 = BN_new()) == NULL ||
(tmp_6 = BN_new()) == NULL || (ctx = BN_CTX_new()) == NULL)
{
reason = ERR_R_MALLOC_FAILURE;
goto err;
}
if (!EC_GROUP_get_curve_GFp(x->group, tmp_1, tmp_2, tmp_3, ctx)) goto err;
if ((point = EC_GROUP_get0_generator(x->group)) == NULL) goto err;
buf_len = EC_POINT_point2oct(x->group, point, POINT_CONVERSION_COMPRESSED, NULL, 0, ctx);
if (!EC_GROUP_get_order(x->group, tmp_5, ctx)) goto err;
if (!EC_GROUP_get_cofactor(x->group, tmp_6, ctx)) goto err;
buf_len = EC_POINT_point2oct(x->group, point, ECDSA_get_conversion_form(x), NULL, 0, ctx);
if (!buf_len || (buffer = OPENSSL_malloc(buf_len)) == NULL)
{
reason = ERR_R_MALLOC_FAILURE;
goto err;
}
if (!EC_POINT_point2oct(x->group, point, POINT_CONVERSION_COMPRESSED, buffer, buf_len, ctx))
if (!EC_POINT_point2oct(x->group, point, ECDSA_get_conversion_form(x), buffer, buf_len, ctx))
{
reason = ERR_R_EC_LIB;
goto err;
@@ -565,13 +580,17 @@ int ECDSAParameters_print(BIO *bp, const ECDSA *x)
if (!print(bp, "Prime p:", tmp_1, buffer, 4)) goto err;
if (!print(bp, "Curve a:", tmp_2, buffer, 4)) goto err;
if (!print(bp, "Curve b:", tmp_3, buffer, 4)) goto err;
if (!print(bp, "Generator ( compressed ) :", tmp_4, buffer, 4)) goto err;
if (!print(bp, "Generator (compressed):", tmp_4, buffer, 4)) goto err;
if (!print(bp, "Order:", tmp_5, buffer, 4)) goto err;
if (!print(bp, "Cofactor:", tmp_6, buffer, 4)) goto err;
ret=1;
err:
if (tmp_1) BN_free(tmp_1);
if (tmp_2) BN_free(tmp_2);
if (tmp_3) BN_free(tmp_3);
if (tmp_4) BN_free(tmp_4);
if (tmp_5) BN_free(tmp_5);
if (tmp_6) BN_free(tmp_6);
if (ctx) BN_CTX_free(ctx);
if (buffer) OPENSSL_free(buffer);
ECDSAerr(ECDSA_F_ECDSAPARAMETERS_PRINT, reason);

Some files were not shown because too many files have changed in this diff Show More