@@ -8,72 +8,28 @@ enum CertGenError: Error {
88 case sanCreationFailed( String )
99}
1010
11- final class Logger {
12- static let shared = Logger ( )
13- private let logFile : URL
14- private let queue = DispatchQueue ( label: " LoggerQueue " )
15-
16- private init ( ) {
17- let docs = FileManager . default. urls ( for: . documentDirectory, in: . userDomainMask) . first!
18- logFile = docs. appendingPathComponent ( " log.txt " )
19- try ? " " . write ( to: logFile, atomically: true , encoding: . utf8)
20- }
21-
22- func log( _ message: String ) {
23- let timestamp = ISO8601DateFormatter ( ) . string ( from: Date ( ) )
24- let fullMsg = " [ \( timestamp) ] \( message) \n "
25- print ( fullMsg, terminator: " " )
26- queue. async {
27- if let data = fullMsg. data ( using: . utf8) {
28- if FileManager . default. fileExists ( atPath: self . logFile. path) {
29- if let handle = try ? FileHandle ( forWritingTo: self . logFile) {
30- handle. seekToEndOfFile ( )
31- handle. write ( data)
32- handle. closeFile ( )
33- }
34- } else {
35- try ? data. write ( to: self . logFile)
36- }
37- }
38- }
39- }
40-
41- func logError( _ error: Error ) {
42- log ( " ERROR: \( error) " )
43- }
44- }
45-
4611public final class GenerateCert {
4712
4813 public static func createAndSaveCerts( caCN: String = " ProStore " ,
4914 serverCN: String = " 127.0.0.1 " ,
5015 rsaBits: Int32 = 2048 ,
5116 daysValid: Int32 = 36500 ) async throws -> [ URL ] {
52- Logger . shared. log ( " Initializing OpenSSL... " )
5317
5418 // Proper initialization for OpenSSL 3.x
5519 OPENSSL_init_ssl ( UInt64 ( OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) , nil )
5620 OPENSSL_init_crypto ( UInt64 ( OPENSSL_INIT_LOAD_CONFIG | OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS) , nil )
5721
58- Logger . shared. log ( " Generating CA key... " )
5922 guard let caPkey = try generateRSAKey ( bits: rsaBits) else { throw CertGenError . keyGenerationFailed ( " CA key generation failed " ) }
60- Logger . shared. log ( " CA key generated. " )
6123
62- Logger . shared. log ( " Creating self-signed CA certificate... " )
6324 guard let caX509 = try createSelfSignedCertificate ( pkey: caPkey, commonName: caCN, days: daysValid, isCA: true ) else {
6425 throw CertGenError . x509CreationFailed ( " CA certificate creation failed " )
6526 }
66- Logger . shared. log ( " CA certificate created. " )
6727
68- Logger . shared. log ( " Generating server key... " )
6928 guard let serverPkey = try generateRSAKey ( bits: rsaBits) else { throw CertGenError . keyGenerationFailed ( " Server key generation failed " ) }
70- Logger . shared. log ( " Server key generated. " )
7129
72- Logger . shared. log ( " Creating server certificate signed by CA... " )
7330 guard let serverX509 = try createCertificateSignedByCA ( serverPKey: serverPkey, caPkey: caPkey, caX509: caX509, commonName: serverCN, days: daysValid) else {
7431 throw CertGenError . x509CreationFailed ( " Server certificate creation failed " )
7532 }
76- Logger . shared. log ( " Server certificate created. " )
7733
7834 let docs = try documentsDirectory ( )
7935 let certDir = docs. appendingPathComponent ( " SSL " , isDirectory: true )
@@ -86,20 +42,13 @@ public final class GenerateCert {
8642 let serverKeyURL = certDir. appendingPathComponent ( " localhost.key.pem " )
8743 let serverCertURL = certDir. appendingPathComponent ( " localhost.crt.pem " )
8844
89- Logger . shared. log ( " Writing CA key to \( rootKeyURL. path) " )
9045 try writePrivateKeyPEM ( pkey: caPkey, to: rootKeyURL. path)
91- Logger . shared. log ( " Writing CA cert to \( rootCertURL. path) " )
9246 try writeX509PEM ( x509: caX509, to: rootCertURL. path)
93- Logger . shared. log ( " Writing final CA cert to \( finalCertURL. path) " )
9447 try writeX509PEM ( x509: caX509, to: finalCertURL. path)
9548
96- Logger . shared. log ( " Writing server key to \( serverKeyURL. path) " )
9749 try writePrivateKeyPEM ( pkey: serverPkey, to: serverKeyURL. path)
98- Logger . shared. log ( " Writing server cert to \( serverCertURL. path) " )
9950 try writeX509PEM ( x509: serverX509, to: serverCertURL. path)
10051
101- Logger . shared. log ( " Certificate generation completed successfully. " )
102-
10352 EVP_PKEY_free ( caPkey)
10453 X509_free ( caX509)
10554 EVP_PKEY_free ( serverPkey)
@@ -301,9 +250,11 @@ public final class GenerateCert {
301250 }
302251 }
303252
304- // Use the simpler method for SAN
305- do { try addSubjectAltName_IP_simple ( cert: cert, ipString: " 127.0.0.1 " ) } catch {
306- Logger . shared. log ( " Warning: SAN add failed: \( error) " )
253+ // Try to add SAN, but ignore failure (no logging)
254+ do {
255+ try addSubjectAltName_IP_simple ( cert: cert, ipString: " 127.0.0.1 " )
256+ } catch {
257+ // intentionally ignored
307258 }
308259
309260 if let ext_bc = X509V3_EXT_conf_nid ( nil , nil , NID_basic_constraints, " CA:FALSE " ) {
@@ -379,4 +330,4 @@ public final class GenerateCert {
379330 throw CertGenError . writeFailed ( " PEM_write_bio_X509 failed for \( path) " )
380331 }
381332 }
382- }
333+ }
0 commit comments