This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
17
unikernel/duniverse/ocaml-tls/mirage/example2/config.ml
Normal file
17
unikernel/duniverse/ocaml-tls/mirage/example2/config.ml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
open Mirage
|
||||
|
||||
let secrets_dir = "sekrit"
|
||||
|
||||
let disk = direct_kv_ro secrets_dir
|
||||
and stack = generic_stackv4 default_network
|
||||
|
||||
let packages = [
|
||||
package "cohttp-mirage" ;
|
||||
package ~min:"0.99" "cohttp-lwt" ;
|
||||
package ~sublibs:["mirage"] "tls" ;
|
||||
package "tcpip" ;
|
||||
]
|
||||
let server = foreign ~deps:[abstract nocrypto] ~packages "Unikernel.Main" @@ stackv4 @-> kv_ro @-> pclock @-> job
|
||||
|
||||
let () =
|
||||
register "tls-server" [ server $ stack $ disk $ default_posix_clock ]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQC2QEje5rwhlD2iq162+Ng3AH9BfA/jNJLDqi9VPk1eMUNGicJv
|
||||
K+aOANKIsOOr9v4RiEXZSYmFEvGSy+Sf1bCDHwHLLSdNs6Y49b77POgatrVZOTRE
|
||||
BE/t1soVT3a/vVJWCLtVCjm70u0S5tcfn4S6IapeIYAVAmcaqwSa+GQNoQIDAQAB
|
||||
AoGAd/CShG8g/JBMh9Nz/8KAuKHRHc2BvysIM1C62cSosgaFmdRrazJfBrEv3Nlc
|
||||
2/0uc2dVYIxuvm8bIFqi2TWOdX9jWJf6oXwEPXCD0SaDbJTaoh0b+wjyHuaGlttY
|
||||
Ztvmf8mK1BOhyl3vNMxh/8Re0dGvGgPZHpn8zanaqfGVz+ECQQDngieUpwzxA0QZ
|
||||
GZKRYhHoLEaPiQzBaXphqWcCLLN7oAKxZlUCUckxRRe0tKINf0cB3Kr9gGQjPpm0
|
||||
YoqXo8mNAkEAyYgdd+JDi9FH3Cz6ijvPU0hYkriwTii0V09+Ar5DvYQNzNEIEJu8
|
||||
Q3Yte/TPRuK8zhnp97Bsy9v/Ji/LSWbtZQJBAJe9y8u3otfmWCBLjrIUIcCYJLe4
|
||||
ENBFHp4ctxPJ0Ora+mjkthuLF+BfdSZQr1dBcX1a8giuuvQO+Bgv7r9t75ECQC7F
|
||||
omEyaA7JEW5uGe9/Fgz0G2ph5rkdBU3GKy6jzcDsJu/EC6UfH8Bgawn7tSd0c/E5
|
||||
Xm2Xyog9lKfeK8XrV2kCQQCTico5lQPjfIwjhvn45ALc/0OrkaK0hQNpXgUNFJFQ
|
||||
tuX2WMD5flMyA5PCx5XBU8gEMHYa8Kr5d6uoixnbS0cZ
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICYzCCAcwCCQDLbE6ES1ih1DANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJB
|
||||
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
|
||||
cyBQdHkgTHRkMRUwEwYDVQQDDAxZT1VSIE5BTUUhISExGDAWBgkqhkiG9w0BCQEW
|
||||
CW1lQGJhci5kZTAeFw0xNDAyMTcyMjA4NDVaFw0xNTAyMTcyMjA4NDVaMHYxCzAJ
|
||||
BgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5l
|
||||
dCBXaWRnaXRzIFB0eSBMdGQxFTATBgNVBAMMDFlPVVIgTkFNRSEhITEYMBYGCSqG
|
||||
SIb3DQEJARYJbWVAYmFyLmRlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2
|
||||
QEje5rwhlD2iq162+Ng3AH9BfA/jNJLDqi9VPk1eMUNGicJvK+aOANKIsOOr9v4R
|
||||
iEXZSYmFEvGSy+Sf1bCDHwHLLSdNs6Y49b77POgatrVZOTREBE/t1soVT3a/vVJW
|
||||
CLtVCjm70u0S5tcfn4S6IapeIYAVAmcaqwSa+GQNoQIDAQABMA0GCSqGSIb3DQEB
|
||||
BQUAA4GBAIo4ZppIlp3JRyltRC1/AyCC0tsh5TdM3W7258wdoP3lEe08UlLwpnPc
|
||||
aJ/cX8rMG4Xf4it77yrbVrU3MumBEGN5TW4jn4+iZyFbp6TT3OUF55nsXDjNHBbu
|
||||
deDVpGuPTI6CZQVhU5qEMF3xmlokG+VV+HCDTglNQc+fdLM0LoNF
|
||||
-----END CERTIFICATE-----
|
||||
41
unikernel/duniverse/ocaml-tls/mirage/example2/unikernel.ml
Normal file
41
unikernel/duniverse/ocaml-tls/mirage/example2/unikernel.ml
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
open Lwt.Infix
|
||||
|
||||
module Main (S : Mirage_stack.V4)
|
||||
(KV : Mirage_kv.RO)
|
||||
(CL : Mirage_clock.PCLOCK) =
|
||||
struct
|
||||
|
||||
module TLS = Tls_mirage.Make (S.TCPV4)
|
||||
module X509 = Tls_mirage.X509 (KV) (CL)
|
||||
module Http = Cohttp_mirage.Server (TLS)
|
||||
|
||||
module Body = Cohttp_lwt.Body
|
||||
|
||||
let callback _conn req body =
|
||||
let resp = Cohttp.Response.make ~status:`OK () in
|
||||
(match Cohttp.Request.meth req with
|
||||
| `POST ->
|
||||
Body.to_string body >|= fun contents ->
|
||||
"<pre>" ^ contents ^ "</pre>"
|
||||
| _ -> Lwt.return "") >|= fun inlet ->
|
||||
let body = Body.of_string @@
|
||||
"<html><head><title>ohai</title></head> \
|
||||
<body><h3>Secure CoHTTP on-line.</h3>"
|
||||
^ inlet ^ "</body></html>\r\n"
|
||||
in
|
||||
(resp, body)
|
||||
|
||||
let upgrade conf tcp =
|
||||
TLS.server_of_flow conf tcp >>= function
|
||||
| Error _ -> Lwt.fail (Failure "tls init")
|
||||
| Ok tls ->
|
||||
let t = Http.make ~callback () in
|
||||
Http.listen t tls
|
||||
|
||||
let start stack kv _ _ =
|
||||
X509.certificate kv `Default >>= fun cert ->
|
||||
let conf = Tls.Config.server ~certificates:(`Single cert) () in
|
||||
S.listen_tcpv4 stack ~port:4433 (upgrade conf) ;
|
||||
S.listen stack
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue