EDGE Toolkit Technical Guideline

PKI (Public Key Infrastructure) with GOST R 34.10-2012

Generate CA Key Pair

edgetk -pkey keygen -algorithm gost2012 -bits 512 -paramset C -prv "CA_Priv.pem" -pass nil -pub "CA_Public.pem"
CA key pair generated successfully:
Private key saved to: albanese.atwebpages.com/directrix/CA_Priv.pem
Public key saved to: albanese.atwebpages.com/directrix/CA_Public.pem
Fingerprint: tqhkkcluYHE8Ycxur7tiUF52MXWvgwobfbTic0qTvG4=
GOST2012 (512-bit)
+-----------------+
|    +OO^^^^^^^^^^|
|   ..o=E&/#^^^^^^|
|    ...ooBO*^%^^^|
|     ..  B ..O=X=|
|      . S B *..oo|
|       . * o o...|
|                 |
|                 |
|                 |
+-----------------+

Generate Self-Signed CA Certificate

edgetk -pkey certgen -algorithm gost2012 -key CA_Priv.pem -cert CA_Cert.pem -subj "/CN=CA/OU=/O=/ST=/L=/C=/emailAddress=ca@test.com" -days 365
Self-signed CA certificate generated successfully:

Raw Content of CA_Cert.pem

-----BEGIN CERTIFICATE-----
MIIC2DCCAkSgAwIBAgIUcW/LEFbz/re8hOisA0j6gbBC/BAwCgYIKoUDBwEBAwMw
WjEJMAcGA1UEBhMAMQkwBwYDVQQIEwAxCTAHBgNVBAcTADEJMAcGA1UECRMAMQkw
BwYDVQQREwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMQswCQYDVQQDEwJDQTAeFw0y
NTA2MjQxMzU1MzVaFw0yNjA2MjQxMzU1MzVaMFoxCTAHBgNVBAYTADEJMAcGA1UE
CBMAMQkwBwYDVQQHEwAxCTAHBgNVBAkTADEJMAcGA1UEERMAMQkwBwYDVQQKEwAx
CTAHBgNVBAsTADELMAkGA1UEAxMCQ0EwgaAwFwYIKoUDBwEBAQIwCwYJKoUDBwEC
AQIDA4GEAASBgO0ioTchNiFgKphRJ/B4W0v0Tx7tJ65m5RoL+NK52W+aLyVE6epc
XKxj/5Es9l7nU1zuXzEU6/mC1lyYTfuA3tTtTw5KCfdXWy1X180XQI2Z15qc/oZX
1A+Z7iu+FRiXzanbjEbywPROhm+cJgBvkYDJd9xx0JG2uj4N94z3Txvfo4GfMIGc
MA4GA1UdDwEB/wQEAwIB/jAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUFxl8E/YoNCgey1i6qhgg1Nx3uQAw
HwYDVR0jBBgwFoAUFxl8E/YoNCgey1i6qhgg1Nx3uQAwGgYDVR0RBBMwEYICQ0GB
C2NhQHRlc3QuY29tMAoGCCqFAwcBAQMDA4GBABu87pI0aHf3GriDlQ9ZCAJz5OHk
XBM8nbxLM688/byZt3MSjoOlVmadczDcBNQmrAJMWSoGl29O8Dl7m/ZEwR86YkbW
4AKrjdSWNmg8xRanxWYCTQTIj+viIQF/dSW8QQ70TlAfYrfvZeU6zSjeyZ/LcRYt
+KkgA/E3wkjV0OpY
-----END CERTIFICATE-----

Certificate Content: CA_Cert.pem

edgetk -pkey text -cert CA_Cert.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number : 647609029174273285535404057619853007645753670672 (716FCB1056F3FEB7BC84E8AC0348FA81B042FC10)
        CommonName    : CA
        EmailAddresses: [ca@test.com]
        IsCA          : true
        Curve         : id-tc26-gost-3410-12-512-paramSetC
        Issuer
            C=,ST=,L=,STREET=,POSTALCODE=,O=,OU=,CN=CA
        Subject
            C=,ST=,L=,STREET=,POSTALCODE=,O=,OU=,CN=CA
        Validity
            Not Before: Jun 24 13:55:35 2025 UTC
            Not After : Jun 24 13:55:35 2026 UTC
        Pub.X
            d4:de:80:fb:4d:98:5c:d6:82:f9:eb:14:31:5f:ee:
            5c:53:e7:5e:f6:2c:91:ff:63:ac:5c:5c:ea:e9:44:
            25:2f:9a:6f:d9:b9:d2:f8:0b:1a:e5:66:ae:27:ed:
            1e:4f:f4:4b:5b:78:f0:27:51:98:2a:60:21:36:21:
            37:a1:22:ed
        Pub.Y
            df:1b:4f:f7:8c:f7:0d:3e:ba:b6:91:d0:71:dc:77:
            c9:80:91:6f:00:26:9c:6f:86:4e:f4:c0:f2:46:8c:
            db:a9:cd:97:18:15:be:2b:ee:99:0f:d4:57:86:fe:
            9c:9a:d7:99:8d:40:17:cd:d7:57:2d:5b:57:f7:09:
            4a:0e:4f:ed
        SubjectKeyId  : 17197c13f62834281ecb58baaa1820d4dc77b900
        AuthorityKeyId: 17197c13f62834281ecb58baaa1820d4dc77b900
    Signature Algorithm: GOST512
         1b:bc:ee:92:34:68:77:f7:1a:b8:83:95:0f:59:08:02:73:e4:
         e1:e4:5c:13:3c:9d:bc:4b:33:af:3c:fd:bc:99:b7:73:12:8e:
         83:a5:56:66:9d:73:30:dc:04:d4:26:ac:02:4c:59:2a:06:97:
         6f:4e:f0:39:7b:9b:f6:44:c1:1f:3a:62:46:d6:e0:02:ab:8d:
         d4:96:36:68:3c:c5:16:a7:c5:66:02:4d:04:c8:8f:eb:e2:21:
         01:7f:75:25:bc:41:0e:f4:4e:50:1f:62:b7:ef:65:e5:3a:cd:
         28:de:c9:9f:cb:71:16:2d:f8:a9:20:03:f1:37:c2:48:d5:d0:
         ea:58
IsValid: true

Generate User's Asymmetric Key Pair

edgetk -pkey keygen -algorithm gost2012 -bits 256 -paramset A -prv "User_Priv.pem" -pass nil -pub "User_Public.pem"
User's key pair generated successfully:
Private key saved to: albanese.atwebpages.com/directrix/User_Priv.pem
Public key saved to: albanese.atwebpages.com/directrix/User_Public.pem
Fingerprint: tmravjD7531TgC92fP17Kp1yWCMkeS5WNjMOS7cESOM=
GOST2012 (256-bit)
+-----------------+
|    B#^^^^^^^^^^^|
|   oE*+*^^^B/^^^^|
|    oo.oB%@+@.^/^|
|     .o  / *.X+@+|
|      . S B +.o .|
|       . *       |
|                 |
|                 |
|                 |
+-----------------+

Key Content: User_Priv.pem

edgetk -pkey text -key User_Priv.pem
-----BEGIN GOST PRIVATE KEY-----
MEACAQAwFwYIKoUDBwEBAQEwCwYJKoUDBwECAQEBBCIEIAS4Ns121wDDWoLSMEJ+
iCuWytHTJOjq5XdsD07yO6YD
-----END GOST PRIVATE KEY-----
Private key: 04B836CD76D700C35A82D230427E882B96CAD1D324E8EAE5776C0F4EF23BA603
Public key:
   X:84C0ADBA639F209B6640727E48EA90A924551C1161CC0A2199E53B99BD5897D3
   Y:4AF227957580ECDE60B06F42AF8F94DCAFDF53F24332AB6B80BDF08C5EA7F182
Curve: id-tc26-gost-3410-12-256-paramSetA

KeyID: 876fbfdec94239ea98bcfdc5eb8dcf9eb04084cc

Key Content: User_Public.pem

edgetk -pkey text -key User_Public.pem
-----BEGIN PUBLIC KEY-----
MF4wFwYIKoUDBwEBAQEwCwYJKoUDBwECAQEBA0MABEDTl1i9mTvlmSEKzGERHFUk
qZDqSH5yQGabIJ9juq3AhILxp16M8L2Aa6syQ/JT36/clI+vQm+wYN7sgHWVJ/JK
-----END PUBLIC KEY-----
Public key:
   X:84C0ADBA639F209B6640727E48EA90A924551C1161CC0A2199E53B99BD5897D3
   Y:4AF227957580ECDE60B06F42AF8F94DCAFDF53F24332AB6B80BDF08C5EA7F182
Curve: id-tc26-gost-3410-12-256-paramSetA

Generate User's Certificate Signing Request (CSR)

edgetk -pkey req -algorithm gost2012 -key User_Priv.pem -cert "User_Cert.csr" -subj "/CN=User/OU=/O=/ST=/L=/C=/emailAddress=user@test.com"
User's Certificate Signing Request (CSR) generated successfully:

Raw Content of User_Cert.csr

-----BEGIN CERTIFICATE REQUEST-----
MIIBXzCCAQwCAQAwejEJMAcGA1UEBhMAMQkwBwYDVQQIEwAxCTAHBgNVBAcTADEJ
MAcGA1UECRMAMQkwBwYDVQQREwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMQ0wCwYD
VQQDEwRVc2VyMRwwGgYJKoZIhvcNAQkBDA11c2VyQHRlc3QuY29tMF4wFwYIKoUD
BwEBAQEwCwYJKoUDBwECAQEBA0MABEDTl1i9mTvlmSEKzGERHFUkqZDqSH5yQGab
IJ9juq3AhILxp16M8L2Aa6syQ/JT36/clI+vQm+wYN7sgHWVJ/JKoCswKQYJKoZI
hvcNAQkOMRwwGjAYBgNVHREEETAPgQ11c2VyQHRlc3QuY29tMAoGCCqFAwcBAQMC
A0EAL9anSaCS3R27TwMU20P9ZsWY+Tu4lL0kiJXeb6TgkVo6mmd5quIdlU9BabUK
YUj51BjH2K0NYIBbtiJtmNoQTw==
-----END CERTIFICATE REQUEST-----

Certificate Content: User_Cert.csr

edgetk -pkey text -cert User_Cert.csr
Certificate:
    Data:
        Version: 0 (0x0)
        CommonName    : User
        EmailAddresses: [user@test.com]
        Curve         : id-tc26-gost-3410-12-256-paramSetA
        Subject
            C=,ST=,L=,STREET=,POSTALCODE=,O=,OU=,CN=User,emailAddress=user@test.com
        Pub.X
            84:c0:ad:ba:63:9f:20:9b:66:40:72:7e:48:ea:90:
            a9:24:55:1c:11:61:cc:0a:21:99:e5:3b:99:bd:58:
            97:d3
        Pub.Y
            4a:f2:27:95:75:80:ec:de:60:b0:6f:42:af:8f:94:
            dc:af:df:53:f2:43:32:ab:6b:80:bd:f0:8c:5e:a7:
            f1:82
    Signature Algorithm: GOST256
         2f:d6:a7:49:a0:92:dd:1d:bb:4f:03:14:db:43:fd:66:c5:98:
         f9:3b:b8:94:bd:24:88:95:de:6f:a4:e0:91:5a:3a:9a:67:79:
         aa:e2:1d:95:4f:41:69:b5:0a:61:48:f9:d4:18:c7:d8:ad:0d:
         60:80:5b:b6:22:6d:98:da:10:4f

Sign the User's CSR with the CA's Private Key

edgetk -pkey x509 -algorithm gost2012 -root CA_Cert.pem -key CA_Priv.pem -days 365 -cert User_Cert.csr User_Certificate.crt
User certificate successfully generated by CA:

Raw Content of User_Certificate.crt

-----BEGIN CERTIFICATE-----
MIIChDCCAfCgAwIBAgIUXl0y7z8jX7D/3VJvqfr156JRg1gwCgYIKoUDBwEBAwIw
WjEJMAcGA1UEBhMAMQkwBwYDVQQIEwAxCTAHBgNVBAcTADEJMAcGA1UECRMAMQkw
BwYDVQQREwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMQswCQYDVQQDEwJDQTAeFw0y
NTA2MjQxMzU1MzVaFw0yNjA2MjQxMzU1MzVaMFwxCTAHBgNVBAYTADEJMAcGA1UE
CBMAMQkwBwYDVQQHEwAxCTAHBgNVBAkTADEJMAcGA1UEERMAMQkwBwYDVQQKEwAx
CTAHBgNVBAsTADENMAsGA1UEAxMEVXNlcjBeMBcGCCqFAwcBAQEBMAsGCSqFAwcB
AgEBAQNDAARA05dYvZk75ZkhCsxhERxVJKmQ6kh+ckBmmyCfY7qtwISC8adejPC9
gGurMkPyU9+v3JSPr0JvsGDe7IB1lSfySqOBjDCBiTAOBgNVHQ8BAf8EBAMCAf4w
HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSHb7/eyUI5
6pi8/cXrjc+esECEzDAfBgNVHSMEGDAWgBQXGXwT9ig0KB7LWLqqGCDU3He5ADAY
BgNVHREEETAPgQ11c2VyQHRlc3QuY29tMAoGCCqFAwcBAQMCA4GBAB+P5HTvQD95
qBwKAMP0bDs/IUu+5JztWbLovSFtw6Yylh2E+iCqv83fi8pbRWnlMMd6STYryv/H
zHw3RApJ2dkL8g64aQrxqxP9dK42ZOlZDzESXoyHvPViHnc+Vliui8Ne7xcsjjAt
EWCpuE2d2gaFMD8ByAxvX7FQpIashb7k
-----END CERTIFICATE-----

Certificate Content: User_Certificate.crt

edgetk -pkey text -cert User_Certificate.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number : 538723538786611580323457053037491260924363899736 (5E5D32EF3F235FB0FFDD526FA9FAF5E7A2518358)
        CommonName    : User
        EmailAddresses: [user@test.com]
        IsCA          : false
        Curve         : id-tc26-gost-3410-12-256-paramSetA
        Issuer
            C=,ST=,L=,STREET=,POSTALCODE=,O=,OU=,CN=CA
        Subject
            C=,ST=,L=,STREET=,POSTALCODE=,O=,OU=,CN=User
        Validity
            Not Before: Jun 24 13:55:35 2025 UTC
            Not After : Jun 24 13:55:35 2026 UTC
        Pub.X
            84:c0:ad:ba:63:9f:20:9b:66:40:72:7e:48:ea:90:
            a9:24:55:1c:11:61:cc:0a:21:99:e5:3b:99:bd:58:
            97:d3
        Pub.Y
            4a:f2:27:95:75:80:ec:de:60:b0:6f:42:af:8f:94:
            dc:af:df:53:f2:43:32:ab:6b:80:bd:f0:8c:5e:a7:
            f1:82
        SubjectKeyId  : 876fbfdec94239ea98bcfdc5eb8dcf9eb04084cc
        AuthorityKeyId: 17197c13f62834281ecb58baaa1820d4dc77b900
    Signature Algorithm: GOST256
         1f:8f:e4:74:ef:40:3f:79:a8:1c:0a:00:c3:f4:6c:3b:3f:21:
         4b:be:e4:9c:ed:59:b2:e8:bd:21:6d:c3:a6:32:96:1d:84:fa:
         20:aa:bf:cd:df:8b:ca:5b:45:69:e5:30:c7:7a:49:36:2b:ca:
         ff:c7:cc:7c:37:44:0a:49:d9:d9:0b:f2:0e:b8:69:0a:f1:ab:
         13:fd:74:ae:36:64:e9:59:0f:31:12:5e:8c:87:bc:f5:62:1e:
         77:3e:56:58:ae:8b:c3:5e:ef:17:2c:8e:30:2d:11:60:a9:b8:
         4d:9d:da:06:85:30:3f:01:c8:0c:6f:5f:b1:50:a4:86:ac:85:
         be:e4
IsValid: true

Verify the Digital Signature of the Certificate

edgetk -pkey check -cert User_Certificate.crt -key CA_Public.pem
Certificate signature verification status: Valid signature
Verified: true

Digital Signature Generation

edgetk -pkey sign -algorithm gost2012 -md streebog256 -key "User_Priv.pem" "test.txt" > sign.txt
Digital signature generated successfully:
39505ae2f3370defac2874a7710590aad1e010926aae5cdf5f797bff3402c0ff13615d98fa64cffb0bbc0807770d2c606fb87e3c6dd044021512b4c0ca331d45

Digital Signature Verification

edgetk -pkey verify -algorithm gost2012 -md streebog256 -key "User_Public.pem" -signature "39505ae2f3370defac2874a7710590aad1e010926aae5cdf5f797bff3402c0ff13615d98fa64cffb0bbc0807770d2c606fb87e3c6dd044021512b4c0ca331d45" "test.txt"
Signature verified successfully:
Verified: true