Skip to content

Commit

Permalink
Introduced ALPN (Application-Layer Protocol Negotiation) support in t…
Browse files Browse the repository at this point in the history
…he SSL/TLS context and connection handling.

Added new constants, types, and functions to manage ALPN protocols.
Implemented ALPN callback functions and integrated them into the server and client examples.
Updated the Ctx struct to include an ALPN callback and provided methods to set ALPN protocols.
Enhanced the client to specify and negotiate ALPN protocols.
Added a method to retrieve the negotiated ALPN protocol from a connection.
Fixed minor typos in existing constants.
  • Loading branch information
ZBCccc committed Sep 12, 2024
1 parent 8a9f20b commit 2edadf4
Show file tree
Hide file tree
Showing 34 changed files with 480 additions and 17 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@

# Dependency directories (remove the comment below to include it)
tongsuo/

crypto/test-runs/
examples/cert_gen/
.vscode/
.idea/
8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/tongsuo-go-sdk.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"configurations": [
{
"name": "macos-clang-arm64",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "macos-clang-arm64",
"compilerArgs": [
""
]
}
],
"version": 4
}
13 changes: 13 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "lldb",
"request": "launch",
"args": [],
"cwd": "/Users/cyan/GolandProjects/tongsuo-go-sdk",
"program": "/Users/cyan/GolandProjects/tongsuo-go-sdk/build/Debug/outDebug"
}
]
}
59 changes: 59 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"C_Cpp_Runner.cCompilerPath": "clang",
"C_Cpp_Runner.cppCompilerPath": "clang++",
"C_Cpp_Runner.debuggerPath": "lldb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}
11 changes: 11 additions & 0 deletions conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -628,3 +628,14 @@ func (c *Conn) setSession(session []byte) error {
}
return nil
}

// GetALPNNegotiated returns the negotiated ALPN protocol
func (c *Conn) GetALPNNegotiated() (string, error) {
var proto *C.uchar
var protoLen C.uint
C.SSL_get0_alpn_selected(c.ssl, &proto, &protoLen)
if protoLen == 0 {
return "", nil
}
return C.GoStringN((*C.char)(unsafe.Pointer(proto)), C.int(protoLen)), nil
}
11 changes: 11 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/chain-ca.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBqjCCAVCgAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwOTAzMDMyNTQ4WhcNMzQw
OTAxMDMyNTQ4WjAsMQswCQYDVQQGEwJVUzEQMA4GA1UECgwHVGVzdCBDQTELMAkG
A1UEAwwCQ0EwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATqHDdxk+O5GHDUoJcI
Pd4FERnR5LGFjdxJT+5Ra/ajv9LIrtzzFoLxADihpM+R1p2JlmH8J43MaYB5nbxn
zmR0o2MwYTAdBgNVHQ4EFgQUTkN68hTBL/9YGPkrmh3wI5nGtQAwHwYDVR0jBBgw
FoAUTkN68hTBL/9YGPkrmh3wI5nGtQAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
Af8EBAMCAYYwCgYIKoEcz1UBg3UDSAAwRQIgRPDLaush4mYk9u0AV25IrmM844zz
CmQxlip59exRBrMCIQDPyFBeQ1Hy8/q98pPWqG0z8s4EpAXvAemjj1XODjU87A==
-----END CERTIFICATE-----
10 changes: 10 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/client_enc.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaTCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwOTAzMDMyNTQ4WhcNMzQw
OTAxMDMyNTQ4WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEVGVzdDESMBAGA1UE
AwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEwma4L8Pc6ZXp
QHL8jOcOZUhD13D+aE73f7DQKWfSv79ex6l16Fiw7sXCX8igunmNb43jpOnxtLj0
Sl2g5U+UIKMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCAzgwCgYIKoEcz1UB
g3UDSQAwRgIhAMhzuZ26uvRKYkY7nSVYHB4cwG9yXq89PmDtWeUld0c9AiEA5zE2
nWs7HjVxZjRzQCVYO+hc8TPnInHVW6OA+GOS6LM=
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/client_enc.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg+itofzZwuY+BIF/i
pVTq7/cDAASBhKlilpvsO2JHe1uhRANCAATCZrgvw9zplelAcvyM5w5lSEPXcP5o
Tvd/sNApZ9K/v17HqXXoWLDuxcJfyKC6eY1vjeOk6fG0uPRKXaDlT5Qg
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/client_sign.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaDCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwOTAzMDMyNTQ4WhcNMzQw
OTAxMDMyNTQ4WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEVGVzdDESMBAGA1UE
AwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEU+t2TH0GAkmZ
uoqQWatMKfBV/1/SVh1769x94UeE9RQGTB3We6gcDiqV5gmbnZRlvXQE0MW4nj/a
/i9PbfWHc6MdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwCgYIKoEcz1UB
g3UDSAAwRQIgM1pr72GckHFTPJyY2isj86d4Z5ut4u4l2LluquA2IR4CIQCHkBR9
rDE+dNKMfvm9QR67f1/GUmX6cqXn1EOitTldxw==
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/client_sign.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg5uesbtktsNoZYrHJ
qVceJiYLaUSKCKuFx7syugkXzcihRANCAART63ZMfQYCSZm6ipBZq0wp8FX/X9JW
HXvr3H3hR4T1FAZMHdZ7qBwOKpXmCZudlGW9dATQxbieP9r+L09t9Ydz
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/server_enc.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaTCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwOTAzMDMyNTQ4WhcNMzQw
OTAxMDMyNTQ4WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEVGVzdDESMBAGA1UE
AwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAETdM+hXDZn9Sw
/d2o37bSUYJoYAMYRj+dR4V9QC/iWZlKq662gYZDrObheS5q4QV9EMSzDd9EGjKG
WFbmVridYKMdMBswCwYDVR0PBAQDAgM4MAwGA1UdEwEB/wQCMAAwCgYIKoEcz1UB
g3UDSQAwRgIhAPYx3ur/rBkfu9Dd5P4asrzyn6OiKDpikU5+yu9K/7PvAiEAw80z
hYdPDmHS+TjwCp5ALwGWzGQHLnclHNYHhmli2a4=
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/server_enc.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg0ODDG4uDFKaEtul6
XUqxqvUQJuLNPKlTJThNiAiWYeqhRANCAARN0z6FcNmf1LD93ajfttJRgmhgAxhG
P51HhX1AL+JZmUqrrraBhkOs5uF5LmrhBX0QxLMN30QaMoZYVuZWuJ1g
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/server_sign.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaDCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwOTAzMDMyNTQ4WhcNMzQw
OTAxMDMyNTQ4WjAwMRIwEAYDVQQDDAlsb2NhbGhvc3QxCzAJBgNVBAYTAlVTMQ0w
CwYDVQQKDARUZXN0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEI6mF5z8vfvl4
y5UohyFfV6rMBvdLrzQ5ZQUY4vtxg5iusKX2U6cC7MHw0+89wic7Q6LcpRI5A5Xw
GWG5kHyFlaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwCgYIKoEcz1UB
g3UDSAAwRQIgauimWYmq0QzIgTeNqUFK+YKbBJ5UwNKGDKUAj9n3S/4CIQD2yEwW
VwpOXCyvgkuZpX9nRrv/J6aKmN/1G/elwsXQsA==
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions crypto/test-runs/TestCAGenerateSM2/server_sign.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgUUnWApCLqLXyyI9u
5QYUKLmlzb7O7eHBg98z/hu8vLqhRANCAAQjqYXnPy9++XjLlSiHIV9XqswG90uv
NDllBRji+3GDmK6wpfZTpwLswfDT7z3CJztDotylEjkDlfAZYbmQfIWV
-----END PRIVATE KEY-----
31 changes: 31 additions & 0 deletions ctx.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ type Ctx struct {
key crypto.PrivateKey
verify_cb VerifyCallback
sni_cb TLSExtServernameCallback
alpn_cb TLSExtAlpnCallback

encCert *crypto.Certificate
encKey crypto.PrivateKey
Expand Down Expand Up @@ -573,6 +574,36 @@ func (c *Ctx) SetTLSExtServernameCallback(sni_cb TLSExtServernameCallback) {
C.X_SSL_CTX_set_tlsext_servername_callback(c.ctx, (*[0]byte)(C.sni_cb))
}

type TLSExtAlpnCallback func(ssl *SSL, out unsafe.Pointer, outlen unsafe.Pointer, in unsafe.Pointer, inlen uint, arg unsafe.Pointer) SSLTLSExtErr

// SetTLSExtAlpnCallback sets callback function for Application Layer Protocol Negotiation
// (ALPN) rfc7301 (https://tools.ietf.org/html/rfc7301).
func (c *Ctx) SetTLSExtAlpnCallback(alpn_cb TLSExtAlpnCallback, arg unsafe.Pointer) {
c.alpn_cb = alpn_cb
C.X_SSL_CTX_set_alpn_select_cb(c.ctx, (*[0]byte)(C.alpn_cb), arg)
}

// SetALPNProtos sets the ALPN protocol list
func (ctx *Ctx) SetALPNProtos(protos []string) error {
// Construct the protocol list (format: length byte of each protocol + protocol content)
var protoList []byte
for _, proto := range protos {
protoList = append(protoList, byte(len(proto))) // Add the length of the protocol
protoList = append(protoList, []byte(proto)...) // Add the protocol content
}

// Convert Go's []byte to a C pointer
cProtoList := (*C.uchar)(C.CBytes(protoList))
defer C.free(unsafe.Pointer(cProtoList)) // Ensure memory is freed after use

// Call the C function to set the ALPN protocols
ret := C.SSL_CTX_set_alpn_protos(ctx.ctx, cProtoList, C.uint(len(protoList)))
if ret != 0 {
return errors.New("failed to set ALPN protocols")
}
return nil
}

func (c *Ctx) SetSessionId(session_id []byte) error {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
Expand Down
11 changes: 11 additions & 0 deletions examples/cert_gen/chain-ca.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE-----
MIIBqjCCAVCgAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwODA5MDg0NDM3WhcNMzQw
ODA3MDg0NDM3WjAsMQswCQYDVQQGEwJVUzEQMA4GA1UECgwHVGVzdCBDQTELMAkG
A1UEAwwCQ0EwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARDK8i1YkNwgNpGZYIO
ahax9kfMlSYLAbMfRDhRduRTIjRz8+mXSyx4qvaPZm+8movEPph0aOt1jZtaVztw
biAto2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4E
FgQUNcH4bbMdFFNA3Lw/CnjGw+XteqwwHwYDVR0jBBgwFoAUNcH4bbMdFFNA3Lw/
CnjGw+XteqwwCgYIKoEcz1UBg3UDSAAwRQIgG399F+DN0at7Tn8080B3cIA2NOwf
Tnh4TrLz754F3R0CIQDWel9BrwSkHpkhOIamJlNMkVv5WWEyutOTXd4ecX68mg==
-----END CERTIFICATE-----
10 changes: 10 additions & 0 deletions examples/cert_gen/client_enc.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaDCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwODA5MDg0NDM3WhcNMzQw
ODA3MDg0NDM3WjAwMQ0wCwYDVQQKDARUZXN0MRIwEAYDVQQDDAlsb2NhbGhvc3Qx
CzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEF+oB73I+S8QH
02U6dFNcB97kMYD3XhvYDMXfgPA4cs6HqhwbAATLEqHgRYmhmz5o2Z5+xK4wLv00
z/tPdCzfOaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCAzgwCgYIKoEcz1UB
g3UDSAAwRQIgPsLSpyc1QIMfIQqjgJ7WdDUmnLaMtCZT4bNxzxbiFZUCIQDLfzcL
ZfBe0ndxJ5mqWJe1zzdUdyNa904q8nKZ1wvVyw==
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions examples/cert_gen/client_enc.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgoFbrWA/pjM1l+BH+
C/+Xp/EAFi9Y/hsRQ5nqP/+Njz6hRANCAAQX6gHvcj5LxAfTZTp0U1wH3uQxgPde
G9gMxd+A8DhyzoeqHBsABMsSoeBFiaGbPmjZnn7ErjAu/TTP+090LN85
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions examples/cert_gen/client_sign.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaDCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwODA5MDg0NDM3WhcNMzQw
ODA3MDg0NDM3WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEVGVzdDESMBAGA1UE
AwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEboJzOdhjgVB9
PmH3AYAbbjmVr+k43lyI4ZljiSoWvUqqNZ+CSh+NxhoIDA/SygYu5SvjnziYLqyV
b4RsqROSIqMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwCgYIKoEcz1UB
g3UDSAAwRQIgG5MAyu9B6NC57TWTdsppBka50cLyJFuQ71v+toWFpnYCIQCcTTCO
8WaFILcJAw5pynE4dlKj+dA+++lHeWDyjUE5vg==
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions examples/cert_gen/client_sign.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgd8wTJAswx3cFOkAA
j4VfPzf61pT5GoF2Nh3FG+xQIruhRANCAARugnM52GOBUH0+YfcBgBtuOZWv6Tje
XIjhmWOJKha9Sqo1n4JKH43GGggMD9LKBi7lK+OfOJgurJVvhGypE5Ii
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions examples/cert_gen/server_enc.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBZzCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwODA5MDg0NDM3WhcNMzQw
ODA3MDg0NDM3WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEVGVzdDESMBAGA1UE
AwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEOvExz3G8PIl1
s7TCUCmHEwQmpqZl0xgvOpITQi/e9IrkY6/H/PRCvrDgVCDuKFHs4a0tZyzw5npu
T6SCxyCixaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCAzgwCgYIKoEcz1UB
g3UDRwAwRAIgdIKUHZL8qlPjBDbMUenRt1uWq6WRkOUAzcmtIb5U4hUCIBQIhchi
4MAr/x5qfuWdlGZYHw02b/GMEq8InhUHMLMu
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions examples/cert_gen/server_enc.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgW6nATaqfw3Ok+PMA
8wYseArXN2Tui+t7IveFcNvUj7ShRANCAAQ68THPcbw8iXWztMJQKYcTBCampmXT
GC86khNCL970iuRjr8f89EK+sOBUIO4oUezhrS1nLPDmem5PpILHIKLF
-----END PRIVATE KEY-----
10 changes: 10 additions & 0 deletions examples/cert_gen/server_sign.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-----BEGIN CERTIFICATE-----
MIIBaTCCAQ6gAwIBAgIBATAKBggqgRzPVQGDdTAsMQswCQYDVQQGEwJVUzEQMA4G
A1UECgwHVGVzdCBDQTELMAkGA1UEAwwCQ0EwHhcNMjQwODA5MDg0NDM3WhcNMzQw
ODA3MDg0NDM3WjAwMRIwEAYDVQQDDAlsb2NhbGhvc3QxCzAJBgNVBAYTAlVTMQ0w
CwYDVQQKDARUZXN0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6fDXNFYc+msH
8ZKoGkQAq8hw9X6i2H9Dp3PZ2RVP/YHL+YHzZKf3WMft9z5MAjaEud/VXKPdMPmt
gbjc+7pC96MdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwCgYIKoEcz1UB
g3UDSQAwRgIhANs9P6UdDgTlDQ2rCXdQgyvsgNtY2Uj+Ak0UB4Helr3HAiEA+icm
2789GQOcrViYYBrIa7KJkG3BEd78SiZ20+zmdk4=
-----END CERTIFICATE-----
5 changes: 5 additions & 0 deletions examples/cert_gen/server_sign.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgmhkH10B7mkkmdOvf
jNac4hAeG6Akoh6C7CLaDfpbrhyhRANCAATp8Nc0Vhz6awfxkqgaRACryHD1fqLY
f0Onc9nZFU/9gcv5gfNkp/dYx+33PkwCNoS539Vco90w+a2BuNz7ukL3
-----END PRIVATE KEY-----
Loading

0 comments on commit 2edadf4

Please sign in to comment.