Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WiP: implement loadPkcs12 function #55

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add test for password protected p12 file
nitram509 committed Oct 2, 2024

Verified

This commit was signed with the committer’s verified signature.
al8n Al Liu
commit 2bc5ed58ebcf948e77e9be1b97416f7cc1ef2e59
9 changes: 5 additions & 4 deletions keystore_load.go
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"io"

"software.sslmate.com/src/go-pkcs12"
)

@@ -120,10 +121,10 @@ func (ks KeyStore) loadPkcs12(r io.Reader, password []byte) error {
cert.Subject.CommonName,
cert.Subject.SerialNumber,
)
//Country, Organization, OrganizationalUnit []string
//Locality, Province []string
//StreetAddress, PostalCode []string
//SerialNumber, CommonName string
// Country, Organization, OrganizationalUnit []string
// Locality, Province []string
// StreetAddress, PostalCode []string
// SerialNumber, CommonName string
ks.m[alias] = tce
}

29 changes: 20 additions & 9 deletions keystore_load_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package keystore

import (
"bytes"
_ "embed"
"encoding/pem"
"os"
"testing"
@@ -86,21 +88,30 @@ func TestLoadKeyPassword(t *testing.T) {
assert.Equal(t, decodedPK.Bytes, actualPKE.PrivateKey, "unexpected private key")
}

func TestLoadPkcs12(t *testing.T) {
//go:embed testdata/keystore_temurin_openjdk_21.0.4_lts.p12
var fileTemurinOpenJdkKeystore []byte

func TestLoadPkcs12NoPassword(t *testing.T) {
password := []byte("")
temurinOpenJdkKeystore := bytes.NewReader(fileTemurinOpenJdkKeystore)

f, err := os.Open("./testdata/keystore_temurin_openjdk_21.0.4_lts.p12")
keyStore := New()
err := keyStore.Load(temurinOpenJdkKeystore, password)
require.NoError(t, err)

defer func() {
err := f.Close()
require.NoError(t, err)
}()
assert.Len(t, keyStore.Aliases(), 148)
}

keyStore := New()
//go:embed testdata/self_signed_certificate/cert.p12
var fileSelfSignedCertP12 []byte

err = keyStore.Load(f, password)
func TestLoadPkcs12WithPassword(t *testing.T) {
password := []byte("password")
selfSignedCert := bytes.NewReader(fileSelfSignedCertP12)

keyStore := New()
err := keyStore.Load(selfSignedCert, password)
require.NoError(t, err)

assert.Len(t, keyStore.Aliases(), 148)
assert.Len(t, keyStore.Aliases(), 1)
}
40 changes: 40 additions & 0 deletions testdata/self_signed_certificate/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

Purpose
-------

This is a self-signed certificate, which is can be used for testing the `keystore-go` library.
It was created by using openssl CLI tool in an interactive terminal session.

Requirements
------------

* OpenSSL 3+ (using 3.3.2 3 Sep 2024 (Library: OpenSSL 3.3.2 3 Sep 2024))


Documentation, how the file were created
----------------------------------------

You need to open a terminal and enter these commands line by line:

```shell
openssl genrsa -out key.pem 4096
openssl req -new > cert.csr
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 9999
openssl pkcs12 -export -out cert.p12 -in cert.pem -inkey key.pem -passin pass:pass -passout pass:password -nokeys -jdktrust anyExtendedKeyUsage -name test-name -caname test-ca-name
```
When `openssl req ...` asks you for some certificate subject information, enter the following values:

```text
Country Name (2 letter code) [AU]:de
State or Province Name (full name) [Some-State]:Brandenburg
Locality Name (eg, city) []:Potsdam
Organization Name (eg, company) [Internet Widgits Pty Ltd]:keystore-go
Organizational Unit Name (eg, section) []:github.com.pavlo-v-chernykh.keystore-go
Common Name (e.g. server FQDN or YOUR name) []:pavlo-v-chernykh.keystore-go
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:pass
An optional company name []:
```
19 changes: 19 additions & 0 deletions testdata/self_signed_certificate/cert.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIDJzCCAg8CAQAwgcwxCzAJBgNVBAYTAmRlMRQwEgYDVQQIDAtCcmFuZGVuYnVy
ZzEQMA4GA1UEBwwHUG90c2RhbTEUMBIGA1UECgwLa2V5c3RvcmUtZ28xMDAuBgNV
BAsMJ2dpdGh1Yi5jb20ucGF2bG8tdi1jaGVybnlraC5rZXlzdG9yZS1nbzElMCMG
A1UEAwwccGF2bG8tdi1jaGVybnlraC5rZXlzdG9yZS1nbzEmMCQGCSqGSIb3DQEJ
ARYXa2V5c3RvcmUtZ29AZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDhRLTMre0GATUnOAVVX37M7WkaMhIBddjluXROguo8FjAn/Z8B
21hguJ8/6rv9uPRuArmb/+JyHOg2Bwt21HiG8G24J7cqLzDTbdn8k0l2hj5GG34p
zIoqup9mND7IZ3h6sbehDWYiRDpS2QMATjCSGBKiH7eY18xMGK8LEiuWNV+VJIIv
V5m6ajkOKGYjjUR5BZb7QyEeb/FARmTM9u1UG7CqXRnDWLk1Cp6/r+Kn9cmJWAvB
28o4XEFibnCLCna7qUOVa4S44z9a1s5DUFNdWvhLztE6Qwb3a/ljaPQyjiucbm5E
80fmgiecMTWyiVGc9bHAbOT//fm8n0ic3cf1AgMBAAGgFTATBgkqhkiG9w0BCQcx
BgwEcGFzczANBgkqhkiG9w0BAQsFAAOCAQEAf0tmy8I+Z+itFFiT6E1fsg4OfESi
KMHszUB3DwoKaE0LJGJ+fdd4+3Yg1w5QQO49rtaPltmTobOkZG5S4fMpuC0fD6+n
4SCK1CnMo8NKvtgiDTiS+9Aan7LOoEzqSODRbG2GKag8JX598bpp7ryvQttsy2j4
h7A1epykLt/ma7QF2fh4mTgZdS3FkFSHjycr4TjgZF4TPcWTmjfHBsM+kIQc+u2x
zeDf6VNHMnvJOYoc6rE00UvLwVQUncdYBNH9LA6s3iaPvyweRAjqSxU4pZOHSs4Q
uTVdInnYZPzWegK1iP0nU5qNfeE0E62ODayjBU8TScu+nZrgT7B/Hor2Eg==
-----END CERTIFICATE REQUEST-----
Binary file added testdata/self_signed_certificate/cert.p12
Binary file not shown.
36 changes: 36 additions & 0 deletions testdata/self_signed_certificate/cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIUf8zHtQCQF+TZjO/rGYQ6VVLonLowDQYJKoZIhvcNAQEL
BQAwgcwxCzAJBgNVBAYTAmRlMRQwEgYDVQQIDAtCcmFuZGVuYnVyZzEQMA4GA1UE
BwwHUG90c2RhbTEUMBIGA1UECgwLa2V5c3RvcmUtZ28xMDAuBgNVBAsMJ2dpdGh1
Yi5jb20ucGF2bG8tdi1jaGVybnlraC5rZXlzdG9yZS1nbzElMCMGA1UEAwwccGF2
bG8tdi1jaGVybnlraC5rZXlzdG9yZS1nbzEmMCQGCSqGSIb3DQEJARYXa2V5c3Rv
cmUtZ29AZXhhbXBsZS5vcmcwIBcNMjQxMDAyMTMwMTU5WhgPMjA1MjAyMTcxMzAx
NTlaMIHMMQswCQYDVQQGEwJkZTEUMBIGA1UECAwLQnJhbmRlbmJ1cmcxEDAOBgNV
BAcMB1BvdHNkYW0xFDASBgNVBAoMC2tleXN0b3JlLWdvMTAwLgYDVQQLDCdnaXRo
dWIuY29tLnBhdmxvLXYtY2hlcm55a2gua2V5c3RvcmUtZ28xJTAjBgNVBAMMHHBh
dmxvLXYtY2hlcm55a2gua2V5c3RvcmUtZ28xJjAkBgkqhkiG9w0BCQEWF2tleXN0
b3JlLWdvQGV4YW1wbGUub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEApYjRiOHLQnvadGxINiuOVgbS5hBdhugKxzGg3pGiMwNgreOSdM492RvgZ53i
anGaRyAxGJHInKhifsTcL0Pzhr0HlZreRoG5vEzR3DdZmK4sL3N8itwR1OI28BSM
A9MoQwYwUrARvvGt5XxV53K0FB+t7knd9D3bSnoNwm/VXZ/ygnx/GPIy9n4Obn7m
RGxVG8ZENc7+kjUQJ3mK96tRe7j6c11B8fseA1X16NoX0fjfy2N0/1ctai3gBSQu
NUhQ1ZAEVk3iy6fMrYpwZAuIUZVPQzviYCABhJmVSSl1XGr0CNr0bT7MOqyDZJau
9mz1NvPwxssujv20SiqxiXrrH6WPTjjd5HhgjhV6TwTuljyZIWPBrMTRp30aZqTP
sUPTgoew5IDveXaZ+dFpIDJfxTHh/razDRrnShpj1/kSSlqt/HmmBTTFQrRdD50k
p6sBLqbGwukKKaU4DnQ6L98xUj9/6p0dHut2eA0sCMZjOVnDh/sPsDKADKTyqzgr
KZ6g6Nra59FapWwvETEV0MWHzNT0z10FnvCxwYE4ldQDSSU2Yscu9KmUNdNbDoar
0DqlTKWEpu4Cg+rpJDKg01yZI9E00sMLSDaNvsTnLovCV8UJo9Yx4NY4op642y86
LvPz4C2yVwM0FaamEMRkcTS0jshl380GGGPnptIQZn8iYRcCAwEAAaMhMB8wHQYD
VR0OBBYEFD8n1rbUCbG6fz+saA+JmY5/XZ3SMA0GCSqGSIb3DQEBCwUAA4ICAQBJ
MPhckQD3lzzb0QCBtTGo4AXT26IUOGuaI+fNOxRaNGNbAdF2k1P3jhu7trJyvBBC
2JBbsISt3WnvRUPISdgl3kQMcii6OqHrFRul08bvmjE3/DtPlz81fiXV2NMHcj9V
2oysXNpaI6Qu9l0H4bHcDPwUmkD+oJc18Jy4xk5wiEc4r0ZmuQfNfSkFUZCx7ULa
tQMFdRuvKiOOWM2hmAvIRTxt8vxY0bukQLBJZZ9m3i2TrmZeaGjbVaj2EnC/8iug
vRXVM2r5oW2w58qfCCagjV7RfaZ8kQFTotj6r0u4FWIMigf6e3pUoy46vsHvVTqm
OhswTGV0r1S60bXXFrqcBIPTr5aw4BuxNeGRfh1qJh5JAFNLrIb0cTYLG5gKCEGd
ra2/WeIH57Y7r1cMLRKZ+RlggjtYD263Ih8vc11Jjoig777mKjMO1NV/ddfQGiPn
5DBzK8VMdoFXriJm00AoiESVdQV3rBMLsVk+BcT+p2ZiECwBydki5wecHG5d1wCq
t4LvxKAy+8fqwg9b5NUofHRD4ZaQSE5qMjL79xc6OrdrjDWEc6OxIH1G6bCBpoH3
L0a5dXvl3VDAOkdJiXqluAFK12wAMmKTsiBwLXOO1/7VYDMFiczFjoxb9C3HZNvO
0srBAqp0ZhTxrqvgFWhjhMxBRl3mLvBtCUIFMJCv4Q==
-----END CERTIFICATE-----
52 changes: 52 additions & 0 deletions testdata/self_signed_certificate/key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCliNGI4ctCe9p0
bEg2K45WBtLmEF2G6ArHMaDekaIzA2Ct45J0zj3ZG+BnneJqcZpHIDEYkcicqGJ+
xNwvQ/OGvQeVmt5Ggbm8TNHcN1mYriwvc3yK3BHU4jbwFIwD0yhDBjBSsBG+8a3l
fFXncrQUH63uSd30PdtKeg3Cb9Vdn/KCfH8Y8jL2fg5ufuZEbFUbxkQ1zv6SNRAn
eYr3q1F7uPpzXUHx+x4DVfXo2hfR+N/LY3T/Vy1qLeAFJC41SFDVkARWTeLLp8yt
inBkC4hRlU9DO+JgIAGEmZVJKXVcavQI2vRtPsw6rINklq72bPU28/DGyy6O/bRK
KrGJeusfpY9OON3keGCOFXpPBO6WPJkhY8GsxNGnfRpmpM+xQ9OCh7DkgO95dpn5
0WkgMl/FMeH+trMNGudKGmPX+RJKWq38eaYFNMVCtF0PnSSnqwEupsbC6QoppTgO
dDov3zFSP3/qnR0e63Z4DSwIxmM5WcOH+w+wMoAMpPKrOCspnqDo2trn0VqlbC8R
MRXQxYfM1PTPXQWe8LHBgTiV1ANJJTZixy70qZQ101sOhqvQOqVMpYSm7gKD6ukk
MqDTXJkj0TTSwwtINo2+xOcui8JXxQmj1jHg1jiinrjbLzou8/PgLbJXAzQVpqYQ
xGRxNLSOyGXfzQYYY+em0hBmfyJhFwIDAQABAoICADsgeL+s7z5rIOeu+cgnnKrL
uy8kL1QNtDPcXTrCyC3yiejyvZBtTpgrJee89G/S7ilzrTW6dO7IEo53YLKdUfIR
uRDOBZEnqyFAS0Gen6kypWO5m4W5/8CLoNX2cOC43su5/S6750rN5rBuzfxi80Gw
4x6XUel44shiemG2Mn9Dr4q+T2Oot11mP19mgnd0Pp4yHpEdw76Tp5aCCopWrj9E
HmlwqSp26QyF+tVWeWWtwLpUZykBiZ5AjqEngD3V+9GcpH/zSAw4fpqKNYT2vZVu
gKZiUITHSeOEPFeqsFn3df1nwCD5aleW4UPfstUgrCIZ1iobzyCSLIDFaS7TMgJD
vGW5EAENb6XJlItvRgZdJCJvMoYtUmvlJt98Pn+9XjlXcmXPzRe9xFdqsKi1somR
+s7s4/aGMtJvZgajd8+8LkBfhqO+Im4W5llFSSZR+XBkzHB9TkJZ/X/Ud240EA6F
DIiywChQOlWcP91MIrsxliXszi6Sxl9uHv68bq+yptSZXFa1s7chPn6GtY5LXYb1
wGB7M/N+TIlx51WVO/mgXm10x2ga+iFyWq9+B5npAsIvA/hvJpSeVMCBGWBcLWu0
oHZz1A49Mk7ip4+AKD75nnJZ0yLMV3aAhrHJFVXfrrjKjOmgwY6obVxfib54Fth4
tZgA4PoS5ZwAkVyyPP4hAoIBAQDQyxTVqejQ+Od1Zn69K6oHAHUOv445UypftAwo
+fP04NpRbQHA7FRFnHrJdPCjAHJoxsuIDR06ZB/wRGwSdNnTF9mnV3p723bzxtC4
7N9cxL/++RcULOC3ORVU/OJUU4tF0ugi5W7SM/R/Xh9yQj9DQvzPBwbijcQEWnt/
h/wjb1SUjNw5wVF96JfQ8VO0m2Dww+IzjJiglFC6hk0MhJvlWISEDypJmxiP6JtM
+XfFMTsPTBqLYiBE8GL/crO8TSUdI4bfleLYJ+6oMA+YlnGaqYTrrDVTxduG5XbJ
wVhRbSp+fvgM0zHhqpeeiwEGQ7nXqYDjPjpZuneeogoWcJCxAoIBAQDK9exRFcxq
q3kpeSVlnJA0CbvbhWbHVEM5eZgCGI7zyTwdElI1DM6Gf2Q/oMXWkt9iNKNVdg4J
YFOkaiK2Qx4Bxi6+gGr6SVzkDCT6LDdssgL/zpNkdNQLGSUVwVCFxztazCtD9HEi
1/Si59LdvFn7XcL9W6OreFhvcY/oyKorXcTI04dl1e0GFkVZ169qiOaOmkJTMFCT
i7uHk5Ie3flqKpjLcUaSCQ3ncPyB9eL/9gTFts9jeremAB3L3pH/1fmsHYLT3oia
Bom08zOOa9RMMh/ah0gbe781Vvsx3/Q/z8ohtBXWVYXRmirNv3nk9WQ01Vc4VX/h
6esZyEM9HkBHAoIBAH2EeGPyHtnxqAN1uF80rqRC7BwPoApqKqEZ9e10RepCejxV
EabO6+JlLZOKT1dOX3kJeTWy3I1Lv7+LAoUd5gz224u0FRf8WUg3jyZ8j9KPHPTE
/dDNIdJD6MUMuWsERkeVgKPp1XNcdHFVPgZMOQfQb3ZtvP/ZRatwUanbMAKFXQ1o
mMPHqZvNhebADRgYCHD08TkYHnD6eIWJUyxhU+7OBev1yfAx4tQwe5wMpKnQ7LZH
g/Wi6c9Hy9vRMqfSoKshvmUPEC3t45UMP3P1jRnzKssa3XwdB9nSfFTRfKyGufMN
lUTweZ42Favj2JvRfxlc9vSlZiKm7F5a/0F6LiECggEAKNBZbFjg2ZaP7+ofvhZE
3WITt+pUp8LnHdi427sKjDWsdAAqLebcZSmbBDyVbDfu2fXR3q611ebcCxUY0+Qd
Vaf/4Gk8mgZEustCaFiZ8K6/caed9jaUKYMt9PkB81UEN5cVID44vhQFavkJa3Oj
+Kt7Oa3C9QlnZ0nD8cDgj4X0u5nmAXGKj43M9mssKFVNX+HfcpElsvYHiRUA7loe
/N2CCm9GDLnrZN5QuOW0d1qGzSec/tk/sw8U7tlcLMFfyt/IXkjC2Y51BMFfXcWL
VKNDypMnyfcRlW1faEEsAeUMNcjcF1TtayAAeY2GuqcqNoGsX3S6GbkLgQzHkLPT
owKCAQEAgrAPw/nL6kTK8JMS+9u3WJ4l38hyS6IGImGFaczKBKpsIHyIRRvCOiT1
5dfq8uoGC5tMI/VRdZGXH9omDp4JxDW4D3/Xk8YebF5N8f152FzQ+BK32X7LQlGt
z5S4P/jMER5vGsos3yXRM3qEvPv3JaVc1qwtZdKDCxyY2IgGVxF2pIOWNL9m1oDz
5+G8fn1kzEXL3r5O4anzl//WthIM3a6s7zO75jam47iQl3PSIlNOOYLilw9XA8kA
NdQawZ871CZG+U0gCoUe7Q1wNqmXyG77GPunJcwgHj7cNzngOCVhBrnkaxOIx2kV
YWQoh5c8uQY9+lL5qw0Ej3BgEsPFyA==
-----END PRIVATE KEY-----
30 changes: 30 additions & 0 deletions testdata/self_signed_certificate/privkey.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQphmD9D6Uo8ilwmxH
QP13VAICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQICJuTMHNghTYEggTI
HmhV0OKT83thajIyyW7/4wfC161ysKE4HwqHUGUiELqrFT3aYUU+0KN8tzXweau3
3a+mFPTzhfO6s1wHW7w83PGaHsfpLcV0gM4Bzy0jksSKj6xhxqSUAKlDuJPJLXoS
EVICIIbszHB3peIfxFA/SuyZcA808Y0rlxwIM4aCoawOvPpnBebgODF/n0AsdesN
FCMzEnbxS6n2JpRWyXpaYA5XnWGbWTGOfe6NwhL7dpcP2G/SfRd/WLlBdR42VGyE
GpgNQiSbj6iF9ZhzwU4sgXkl919VnXewV/yQn6vBRACauHrCAfUux5r76LHRN+en
pqiSCKaNRpO43nyBAJh6xub/aii1AETESVSwoErTuYy8eRnae8alhqgyEuyXlDSn
XWG4pQLYq1G3uumG12bWoDuXFoNv4SPygr/44g0zC4bozdvSw1058/yFyHOO5MPj
Wwtx1wwvnbGdIYCZXVEaaPbmBI3RiH/UQu7N/3U4tDY4e70DuRM5M/PgIv7IcDT4
J292eRVucM30cz//4u+8ELgFUr8JvxDnWIuIoA/oZWeyk6pr9Iaj3kqyLimX1sIz
vu/VgreApWubl39C5LF7FPimOKj1DkpYG140ORHcwPkCEuD1gKyy0uffRxaPxo75
wIzb3bf+bN88pinV3t4vv2Y3cDXOqQD3ddMTaKXzYueSGRw7BwebCZkolOST/Ge3
lPOTMFko6x5Io4e9F/XTgzi7JP4X62Sh4jCyUMSjUGtPEtJrWd/n/SmfV4LLCic+
c1pIOSDS5jFwbquH2gZR+YPcPhFe93HQbMn8NXtTQ+PRPESoMtTdsVpKEqHrLm8V
B8bjiZd/AC47mcrnDFIuHdk1CDCSW9F+0MwitGChg0FCsALVoehlQWk/gQAJqI6P
j99/Ej07s0iE2n56wuy0szwPhY8rhLLdV05P2oMLlrIqOFX1tf/d2Gp84t1G5LqH
5aeZwpswsDY/F5Wd6KqQrf9ExHDQsXoj5d8q4U/5AtB6wyAoBbhYGA5loKq29opb
FnJJtyY/GOjQTFXz7YdgQ+alNp8XUcaMN+Lv23VLbJ1zvQ0J67+tZ6sFxP3BbDEt
PItN0kOo90C1e5ysvT9MBsYVF/eGwzFUzyDLVvxPx5PRbYOBEnI5llUY08+aEu7v
6AHJ0jhVTKOR+HdQ8y0STjReuJmfllYUgR/MEPoGydMyB0vhHqHwHjcWGX6OBnDh
BMTp+vR8Bn5qZKaIxBuPtP4n4H0YEidUKHsKk5IrMj74epTYbsBVJJVMq3MGX8Si
fJYCv3pyVq3csisYAJnIwQGBt75wGd6t9h3ccQ9F82gXND0RssGwB2alOvSQmt25
097LMjky6AXTc9jLiN/+Sbf53HMl6egUSGe4SBI7MIJvKQU8F62mbLT40IN7pFax
ad4FGwQLMa8RxjrY0bsUbfW2zTyxpCkgVCVy/pEYUS8y6OpA60gj1WtlkVs3NI8n
2mTOv9/OXWzS5die0cNHlyss/yf14wZTeY7OGtAaLLhM3vm92gNA8ICLPklqKdvt
rnmBN7Saoj4gfIp+gx2LV5X6eDgopLOe3ZwdoTdC6DMNIohoYzoBMJ26mx71duqa
3MnZQXqECo4IvUSlXor956krCkhu3owp
-----END ENCRYPTED PRIVATE KEY-----