Skip to content

Commit 7acab76

Browse files
committed
extract LibCrypto
1 parent c8b71e7 commit 7acab76

4 files changed

Lines changed: 52 additions & 51 deletions

File tree

src/ext/openssl/lib_crypro.cr

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
require "openssl/lib_crypto"
2+
3+
lib LibCrypto
4+
alias EVP_PKEY = Void*
5+
alias EVP_PKEY_CTX = Void*
6+
alias X509_REQ = Void*
7+
alias ASN1_INTEGER = Void*
8+
alias ASN1_TIME = Void*
9+
10+
EVP_PKEY_RSA = 6
11+
12+
fun evp_pkey_ctx_new_id = EVP_PKEY_CTX_new_id(id : Int32, e : Void*) : EVP_PKEY_CTX
13+
fun evp_pkey_ctx_free = EVP_PKEY_CTX_free(ctx : EVP_PKEY_CTX)
14+
fun evp_pkey_keygen_init = EVP_PKEY_keygen_init(ctx : EVP_PKEY_CTX) : Int32
15+
fun evp_pkey_ctx_ctrl_str = EVP_PKEY_CTX_ctrl_str(ctx : EVP_PKEY_CTX, type : UInt8*, value : UInt8*) : Int32
16+
fun evp_pkey_keygen = EVP_PKEY_keygen(ctx : EVP_PKEY_CTX, ppkey : EVP_PKEY*) : Int32
17+
fun evp_pkey_free = EVP_PKEY_free(pkey : EVP_PKEY)
18+
19+
fun bio_new_file = BIO_new_file(filename : UInt8*, mode : UInt8*) : Bio*
20+
fun bio_free_all = BIO_free_all(bio : Bio*) : Int32
21+
22+
fun pem_read_bio_private_key = PEM_read_bio_PrivateKey(bp : Bio*, x : EVP_PKEY*, cb : Void*, u : Void*) : EVP_PKEY
23+
fun pem_write_bio_private_key = PEM_write_bio_PrivateKey(bp : Bio*, x : EVP_PKEY, enc : Void*, kstr : UInt8*, klen : Int32, cb : Void*, u : Void*) : Int32
24+
25+
fun pem_read_bio_x509 = PEM_read_bio_X509(bp : Bio*, x : X509*, cb : Void*, u : Void*) : X509
26+
fun pem_write_bio_x509_req = PEM_write_bio_X509_REQ(bp : Bio*, x : X509_REQ) : Int32
27+
fun pem_write_bio_x509 = PEM_write_bio_X509(bp : Bio*, x : X509) : Int32
28+
29+
fun x509_req_new = X509_REQ_new : X509_REQ
30+
fun x509_req_free = X509_REQ_free(req : X509_REQ)
31+
fun x509_req_set_version = X509_REQ_set_version(req : X509_REQ, version : Long) : Int32
32+
fun x509_req_set_subject_name = X509_REQ_set_subject_name(req : X509_REQ, name : X509_NAME) : Int32
33+
fun x509_req_set_pubkey = X509_REQ_set_pubkey(req : X509_REQ, pkey : EVP_PKEY) : Int32
34+
fun x509_req_sign = X509_REQ_sign(req : X509_REQ, pkey : EVP_PKEY, md : EVP_MD) : Int32
35+
fun x509_req_get_subject_name = X509_REQ_get_subject_name(req : X509_REQ) : X509_NAME
36+
fun x509_req_get_pubkey = X509_REQ_get_pubkey(req : X509_REQ) : EVP_PKEY
37+
38+
fun x509_set_version = X509_set_version(x : X509, version : Long) : Int32
39+
fun x509_set_issuer_name = X509_set_issuer_name(x : X509, name : X509_NAME) : Int32
40+
fun x509_set_pubkey = X509_set_pubkey(x : X509, pkey : EVP_PKEY) : Int32
41+
fun x509_sign = X509_sign(x : X509, pkey : EVP_PKEY, md : EVP_MD) : Int32
42+
fun x509_get_serial_number = X509_get_serialNumber(x : X509) : ASN1_INTEGER
43+
fun x509_getm_not_before = X509_getm_notBefore(x : X509) : ASN1_TIME
44+
fun x509_getm_not_after = X509_getm_notAfter(x : X509) : ASN1_TIME
45+
46+
fun asn1_integer_set = ASN1_INTEGER_set(a : ASN1_INTEGER, v : Long) : Int32
47+
fun x509_gmtime_adj = X509_gmtime_adj(s : ASN1_TIME, adj : Long) : ASN1_TIME
48+
end

src/http/proxy/server/certificate_generator.cr

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,5 @@
1-
require "openssl/lib_crypto"
21
require "socket"
3-
4-
lib LibCrypto
5-
alias EVP_PKEY = Void*
6-
alias EVP_PKEY_CTX = Void*
7-
alias X509_REQ = Void*
8-
alias ASN1_INTEGER = Void*
9-
alias ASN1_TIME = Void*
10-
11-
EVP_PKEY_RSA = 6
12-
13-
fun evp_pkey_ctx_new_id = EVP_PKEY_CTX_new_id(id : Int32, e : Void*) : EVP_PKEY_CTX
14-
fun evp_pkey_ctx_free = EVP_PKEY_CTX_free(ctx : EVP_PKEY_CTX)
15-
fun evp_pkey_keygen_init = EVP_PKEY_keygen_init(ctx : EVP_PKEY_CTX) : Int32
16-
fun evp_pkey_ctx_ctrl_str = EVP_PKEY_CTX_ctrl_str(ctx : EVP_PKEY_CTX, type : UInt8*, value : UInt8*) : Int32
17-
fun evp_pkey_keygen = EVP_PKEY_keygen(ctx : EVP_PKEY_CTX, ppkey : EVP_PKEY*) : Int32
18-
fun evp_pkey_free = EVP_PKEY_free(pkey : EVP_PKEY)
19-
20-
fun bio_new_file = BIO_new_file(filename : UInt8*, mode : UInt8*) : Bio*
21-
fun bio_free_all = BIO_free_all(bio : Bio*) : Int32
22-
23-
fun pem_read_bio_private_key = PEM_read_bio_PrivateKey(bp : Bio*, x : EVP_PKEY*, cb : Void*, u : Void*) : EVP_PKEY
24-
fun pem_write_bio_private_key = PEM_write_bio_PrivateKey(bp : Bio*, x : EVP_PKEY, enc : Void*, kstr : UInt8*, klen : Int32, cb : Void*, u : Void*) : Int32
25-
26-
fun pem_read_bio_x509 = PEM_read_bio_X509(bp : Bio*, x : X509*, cb : Void*, u : Void*) : X509
27-
fun pem_write_bio_x509_req = PEM_write_bio_X509_REQ(bp : Bio*, x : X509_REQ) : Int32
28-
fun pem_write_bio_x509 = PEM_write_bio_X509(bp : Bio*, x : X509) : Int32
29-
30-
fun x509_req_new = X509_REQ_new : X509_REQ
31-
fun x509_req_free = X509_REQ_free(req : X509_REQ)
32-
fun x509_req_set_version = X509_REQ_set_version(req : X509_REQ, version : Long) : Int32
33-
fun x509_req_set_subject_name = X509_REQ_set_subject_name(req : X509_REQ, name : X509_NAME) : Int32
34-
fun x509_req_set_pubkey = X509_REQ_set_pubkey(req : X509_REQ, pkey : EVP_PKEY) : Int32
35-
fun x509_req_sign = X509_REQ_sign(req : X509_REQ, pkey : EVP_PKEY, md : EVP_MD) : Int32
36-
fun x509_req_get_subject_name = X509_REQ_get_subject_name(req : X509_REQ) : X509_NAME
37-
fun x509_req_get_pubkey = X509_REQ_get_pubkey(req : X509_REQ) : EVP_PKEY
38-
39-
fun x509_set_version = X509_set_version(x : X509, version : Long) : Int32
40-
fun x509_set_issuer_name = X509_set_issuer_name(x : X509, name : X509_NAME) : Int32
41-
fun x509_set_pubkey = X509_set_pubkey(x : X509, pkey : EVP_PKEY) : Int32
42-
fun x509_sign = X509_sign(x : X509, pkey : EVP_PKEY, md : EVP_MD) : Int32
43-
fun x509_get_serial_number = X509_get_serialNumber(x : X509) : ASN1_INTEGER
44-
fun x509_getm_not_before = X509_getm_notBefore(x : X509) : ASN1_TIME
45-
fun x509_getm_not_after = X509_getm_notAfter(x : X509) : ASN1_TIME
46-
47-
fun asn1_integer_set = ASN1_INTEGER_set(a : ASN1_INTEGER, v : Long) : Int32
48-
fun x509_gmtime_adj = X509_gmtime_adj(s : ASN1_TIME, adj : Long) : ASN1_TIME
49-
end
2+
require "./../../../ext/openssl/lib_crypro.cr"
503

514
class HTTP::Proxy::Server
525
class CertificateGenerator

src/http/proxy/server/context.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class HTTP::Proxy::Server
139139
end
140140

141141
private def debug_puts(mitm : HTTP::Proxy::Server::MITMConfig, message : String)
142-
puts message if mitm.debug
142+
puts message if mitm.debug?
143143
end
144144
{% end %}
145145

src/http/proxy/server/mitm_config.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ class HTTP::Proxy::Server
77
getter ca_certificate_path : String?
88
getter ca_private_key_path : String?
99
getter certificate_cache_dir : String
10-
getter upstream_insecure : Bool
11-
getter debug : Bool
10+
getter? upstream_insecure : Bool
11+
getter? debug : Bool
1212

1313
def initialize(@certificate_chain_path : String, @private_key_path : String, @upstream_insecure : Bool = false, @debug : Bool = false)
1414
@ca_certificate_path = nil

0 commit comments

Comments
 (0)