PageSourceSearch

https://phpseclib.com/assets/js/0a7f2bcf.422d1f43.js

js phpseclib.com collected 2026-10-02 05:15:06 UTC 21,345 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([["4683"],{4871(e,n,d){d.r(n),d.d(n,{metadata:()=>i,default:()=>p,frontMatter:()=>A,contentTitle:()=>c,toc:()=>t,assets:()=>l});var i=JSON.parse('{"id":"publickeys/ec-keys","title":"Supported EC Key Formats","description":"All keys are the same key (nistp256 / secp256r1) encoded differently. Encrypted keys use demo as the key.","source":"@site/versioned_docs/version-4.0/publickeys/ec-keys.md","sourceDirName":"publickeys","slug":"/publickeys/ec-keys","permalink":"/docs/publickeys/ec-keys","draft":false,"unlisted":false,"editUrl":"https://github.com/phpseclib/phpseclib.github.io/tree/source/versioned_docs/version-4.0/publickeys/ec-keys.md","tags":[],"version":"4.0","sidebarPosition":7,"frontMatter":{"title":"Supported EC Key Formats","sidebar_position":7}}'),r=d(4848),s=d(8453);let A={title:"Supported EC Key Formats",sidebar_position:7},c,l={},t=[{value:"PKCS1",id:"pkcs1",level:2},{value:"Private Keys",id:"private-keys",level:3},{value:"Named Curve",id:"named-curve",level:4},{value:"Specified Curve",id:"specified-curve",level:4},{value:"Encrypted Private Keys",id:"encrypted-private-keys",level:3},{value:"Named Curve",id:"named-curve-1",level:4},{value:"Specified Curve",id:"specified-curve-1",level:4},{value:"Parameters",id:"parameters",level:3},{value:"Named Curve",id:"named-curve-2",level:4},{value:"Specified Curve",id:"specified-curve-2",level:4},{value:"PKCS8",id:"pkcs8",level:2},{value:"Private Keys",id:"private-keys-1",level:3},{value:"Named Curve",id:"named-curve-3",level:4},{value:"Specified Curve",id:"specified-curve-3",level:4},{value:"Encrypted Private Keys",id:"encrypted-private-keys-1",level:3},{value:"Named Curve",id:"named-curve-4",level:4},{value:"Specified Curve",id:"specified-curve-4",level:4},{value:"Public Keys",id:"public-keys",level:3},{value:"Named Curve",id:"named-curve-5",level:4},{value:"Specified Curve",id:"specified-curve-5",level:4},{value:"PuTTY",id:"putty",level:2},{value:"Private Keys (v2)",id:"private-keys-v2",level:3},{value:"Encrypted Private Keys (v2)",id:"encrypted-private-keys-v2",level:3},{value:"Private Keys (v3)",id:"private-keys-v3",level:3},{value:"Encrypted Private Keys (v3)",id:"encrypted-private-keys-v3",level:3},{value:"Public Keys",id:"public-keys-1",level:3},{value:"OpenSSH",id:"openssh",level:2},{value:"Private Keys",id:"private-keys-2",level:3},{value:"Encrypted Private Keys",id:"encrypted-private-keys-2",level:3},{value:"Public Keys",id:"public-keys-2",level:3},{value:"JWK",id:"jwk",level:2},{value:"Private Keys",id:"private-keys-3",level:3},{value:"Public Keys",id:"public-keys-3",level:3},{value:"XML",id:"xml",level:2},{value:"Public Keys",id:"public-keys-4",level:3},{value:"Regular ECDSAKeyValues",id:"regular-ecdsakeyvalues",level:4},{value:"RFC4050 formatted ECDSAKeyValues",id:"rfc4050-formatted-ecdsakeyvalues",level:4}];function a(e){let n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["All keys are the same key (",(0,r.jsx)(n.a,{href:"https://www.secg.org/sec2-v2.pdf#page=13",children:"nistp256 / secp256r1"}),") encoded differently. Encrypted keys use ",(0,r.jsx)(n.code,{children:"demo"})," as the key."]}),"\n",(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/docs/publickeys/ec#supported-formats",children:"EC: Supported Formats"}
1)," for a more in depth discussion of the various formats (the features they support, the standards to which they conform, etc)."]}),"\n",(0,r.jsx)(n.h2,{id:"pkcs1",children:"PKCS1"}),"\n",(0,r.jsx)(n.h3,{id:"private-keys",children:"Private Keys"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve",children:"Named Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIEqT+eRC3V7MI/SUWQD0cLU30uAjUaqSiLPtvKzR4jwKoAoGCCqGSM49\nAwEHoUQDQgAErPJyxEu2/oKCrJaaTVTrq39DKJ2XcN6W+k8UvGf+Y/lDWNbFitQo\ncabsDUvSN0edHH3UKP5QPTz4cOlyIPMrXQ==\n-----END EC PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS1::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PRIVATE KEY-----\nMIIBTgIBAQQgSpP55ELdXswj9JRZAPRwtTfS4CNRqpKIs+28rNHiPAqggeAwgd0C\nAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////\nMEQEIP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57Pr\nvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwRBBGsX0fLhLEJH+Lzm5WOkQPJ3A32BLesz\noPShOUXYmMKWT+NC4v4af5uO5+tKfA+eFivOM1drMV7Oy7ZAaDe/UfUCIQD/////\nAAAAAP//////////vOb6racXnoTzucrC
1/GMlUaFEA0IABKzycsRLtv6CgqyWmk1U\n66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08+HDpciDz\nK10=\n-----END EC PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"encrypted-private-keys",children:"Encrypted Private Keys"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve-1",children:"Named Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-128-CBC,0D74A1F3DB0F51121E9DA1B28A0AB2BD\n\nNZfHlU+Ln86s5DlbTdTb/P6JXAAOEsONC3ruujq2ZEU7v47I578aQGmjV6lOvyYN\ny4GMK+Mn8tAuap2TZYk09Ucr32fFG3H8CaXILjYHivorUuRhOk8g/l1JHnf7M0YH\nuuOcI+Fk3RN2CPktcdHp59OtgZwny2IySqNiw/F/5Y4=\n-----END EC PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve-1",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS1::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-128-CBC,952C100E8CC7DC068297848512B6598F\n\ncgkqw+xfC5RUAyiU9tlt3du6HH+c+RZYaLSGUcfRlmSoW9ohMr8dadCs66npqXtf\nkbgEotqL8IwaIA2q9qGpsCa19mvRS0Ys5JyQEmopHGIrm571NYiXWT06iwxHTyJb\nXRR70iPVluG7wPK+C8BhEXWzE6GU5yIbe46GFxLE/SipDyjvs2HAZCM8PHsqoJa6\nfx11e45kcL+FGdLQbjzP9DZF0K1825A/yWB6jyLgdhMrghFFRd47G+UDdJ+Ph58l\nEM8Q1VL/azCgSvh15ACQ7e4SCk3XCqG5mWJRVO0+JTR14hFlH7cZKtXZ/dZOtZgz\n8MvutZikiTDWWgG/Zt+czt2lEPy8B7BLNsR1qhcD8k8QdNLPHcCa+5eD4WsHy/W2\nu2DZ/2vUGB1v2SOnbNboRut6PQE+by3d3xdTVFugZ1ABRNBUR/CdGxMRp82USiC3\nOmX98QrbsaxIO5K6Um+/YA==\n-----END EC PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve-2",children:"Named Curve"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getParameters()->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PARAMETERS-----\nBggqhkjOPQMBBw==\n-----END EC PARAMETERS-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve-2",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS1::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->getParameters()->toString('PKCS1')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN EC PARAMETERS-----\nMIHdAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP//////////\n/////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6\nk+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9\ngS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA\n/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVE=\n-----END EC PARAMETERS-----\n"})}),"\n",(0,r.jsx)(n.h2,{id:"pkcs8",children:"PKCS8"}),"\n",(0,r.jsx)(n.h3,{id:"private-keys-1",children:"Private Keys"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve-3",children:"Named Curve"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSpP55ELdXswj9JRZ\nAPRwtTfS4CNRqpKIs+28rNHiPAqhRANCAASs8nLES7b+goKslppNVOurf0MonZdw\n3pb6TxS8Z/5j+UNY1sWK1ChxpuwNS9I3R50cfdQo/lA9PPhw6XIg8ytd\n-----END PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve-3",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS8::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN PRIVATE KEY-----\nMIIBXgIBADCB6QYHKoZIzj0CATCB3QIBATAsBgcqhkjOPQEBAiEA/////wAAAAEA\nAAAAAAAAAAAAAAD///////////////8wRAQg/////wAAAAEAAAAAAAAAAAAAAAD/\n//////////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLBEEE\naxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54W\nK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8\nYyVRBG0wawIBAQQgSpP55ELdXswj9JRZAPRwtTfS4CNRqpKIs+28rNHiPAqhRANC\nAASs8nLES7b+goKslppNVOurf0MonZdw3pb6TxS8Z/5j+UNY1sWK1ChxpuwNS9I3\nR50cfdQo/lA9PPhw6XIg8ytd\n-----END PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"encrypted-private-keys-1",children:"Encrypted Private Keys"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve-4",children:"Named Curve"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIHsMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAgSAksBQ9sCqQICCAAw\nDAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEBVJUSnfBOUCx7FnWtt+pzoEgZCQ\nf5gKEy9lnPcM7SgrNBOXNk9mPHSTO1D4UIlPdPtxbPPYM2ULWrxrQoQ0iSmXUp1n\n0jHfDbnBlgDTS/8ezcnaRDuusZojGNUZg1DfJ3fDxKl6v/zxj1aqNtoyco7uDWuc\nYQEdJEzPsVKYMa37gdGp5+2nv/Of/sVss+t8+6IHs445JC15ZF5XirVqx5qUjxQ=\n-----END ENCRYPTED PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve-4",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS8::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIBzTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIvXl/jJoRTfICAggA\nMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBCOWt/n7mCGfhpheWWfezOfBIIB\ncGmNkXw1hYneO8XKQvKHSauJ8aUWrh9fc+nTNXq171vJtdZpQN/NcJ5TYA4yEKa1\nmquL8Jeoauy9HGXo2g1nE6vkRlyTPIzAGXhdzNUfeFjl4DpClELkfzgLDoSUKP7R\n4pziC0fqxmZDTJVaNludMrB3JV8ET+abg9MRAr/XqxflTq+kvLl/nvO6UBuEVbPB\n0/l79vZAIJFFBB3L6DcVB8yesGHbbJCeIqG3AoxRgUIK7JBCDWpO+e19L13q9NpZ\nMBB+dPfx9T3PYFPQ1YBjHDlVKuPDImL3F6pLQglyBj4ImoT2VAOABiSKamos4jxW\nu21rdiy8soQrgUpnY1uUngE29hggSz5kfP5jQW59i/dkXPkRte4v9z38ijsQs1uA\n6jAqk/SHUCdgWbOTFhXt7xjKLCpO26GrQ7a+mQcBjkVa8aZQwdVVpatIGfEdQfnl\nxje33obeN/yjl+x/eFAfd+fUDN907fRZO8Sko956uQRy\n-----END ENCRYPTED PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"public-keys",children:"Public Keys"}),"\n",(0,r.jsx)(n.h4,{id:"named-curve-5",children:"Named Curve"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErPJyxEu2/oKCrJaaTVTrq39DKJ2X\ncN6W+k8UvGf+Y/lDWNbFitQocabsDUvSN0edHH3UKP5QPTz4cOlyIPMrXQ==\n-----END PUBLIC KEY-----\n"})}),"\n",(0,r.jsx)(n.h4,{id:"specified-curve-5",children:"Specified Curve"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\PKCS8::useSpecifiedCurve()"})," and then ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('PKCS8')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN PUBLIC KEY-----\nMIIBMDCB6QYHKoZIzj0CATCB3QIBATAsBgcqhkjOPQEBAiEA/////wAAAAEAAAAA\nAAAAAAAAAAD///////////////8wRAQg/////wAAAAEAAAAAAAAAAAAAAAD/////\n//////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLBEEEaxfR\n8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84z\nV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVR\nA0IABKzycsRLtv6CgqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L\n0jdHnRx91Cj+UD08+HDpciDzK10=\n-----END PUBLIC KEY-----\n"})}),"\n",(0,r.jsx)(n.h2,{id:"putty",children:"PuTTY"}),"\n",(0,r.jsx)(n.h3,{id:"private-keys-v2",children:"Private Keys (v2)"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('PuTTY')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"PuTTY-User-Key-File-2: ecdsa-sha2-nistp256\nEncryption: none\nComment: phpseclib-generated-key\nPublic-Lines: 3\nAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6C\ngqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08\n+HDpciDzK10=\nPrivate-Lines: 1\nAAAAIQBKk/nkQt1ezCP0lFkA9HC1N9LgI1Gqkoiz7bys0eI8Cg==\nPrivate-MAC: 9239cacc5e71079d25f63d03941c5a35b5304f6c\n"})}),"\n",(0,r.jsx)(n.h3,{id:"encrypted-private-keys-v2",children:"Encrypted Private Keys (v2)"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PuTTY')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"PuTTY-User-Key-File-2: ecdsa-sha2-nistp256\nEncryption: aes256-cbc\nComment: phpseclib-generated-key\nPublic-Lines: 3\nAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6C\ngqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08\n+HDpciDzK10=\nPrivate-Lines: 1\nU43Vy/gRjjfRA8Nbsy4Mremrnz3n49fTCwDdB2t1Nr9di16WaoBb582T489sn5ff\nPrivate-MAC: 1a89ef91b9a3fcc4d3ad9033a06bf5cbd36395d9\n"})}),"\n",(0,r.jsx)(n.h3,{id:"private-keys-v3",children:"Private Keys (v3)"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('PuTTY', ['version' => 3])"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"PuTTY-User-Key-File-3: ecdsa-sha2-nistp256\nEncryption: none\nComment: phpseclib-generated-key\nPublic-Lines: 3\nAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6C\ngqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08\n+HDpciDzK10=\nPrivate-Lines: 1\nAAAAIEqT+eRC3V7MI/SUWQD0cLU30uAjUaqSiLPtvKzR4jwK\nPrivate-MAC: 434b8765b1cca200a07daf361e7f1cbc6f7b801c0acc5bac0ad81d57144d179a\n"})}),"\n",(0,r.jsx)(n.h3,{id:"encrypted-private-keys-v3",children:"Encrypted Private Keys (v3)"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('PuTTY', ['version' => 3])"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"PuTTY-User-Key-File-3: ecdsa-sha2-nistp256\nEncryption: aes256-cbc\nComment: phpseclib-generated-key\nPublic-Lines: 3\nAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6C\ngqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08\n+HDpciDzK10=\nKey-Derivation: Argon2id\nArgon2-Memory: 8192\nArgon2-Passes: 13\nArgon2-Parallelism: 1\nArgon2-Salt: a682b1d606e5e3baab0ef26e754f1c68\nPrivate-Lines: 1\nVv79j4MLaDOCn/UPKDKiAyuMpyxhHwcnN136PKJbUqGhSByQoTYRbNtmzPK3DDVd\nPrivate-MAC: 626ddc4a6d6a14aa2bfdc16c591e9d12c05f2b4ddf8cde9c973a38fd0ef0618e\n"})}),"\n",(0,r.jsx)(n.h3,{id:"public-keys-1",children:"Public Keys"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('PuTTY')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'---- BEGIN SSH2 PUBLIC KEY ----\nComment: "phpseclib-generated-key"\nAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6C\ngqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08\n+HDpciDzK10=\n---- END SSH2 PUBLIC KEY ----\n'})}),"\n",(0,r.jsx)(n.h2,{id:"openssh",children:"OpenSSH"}),"\n",(0,r.jsx)(n.h3,{id:"private-keys-2",children:"Private Keys"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('OpenSSH')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS\n1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSs8nLES7b+goKslppNVOurf0MonZdw\n3pb6TxS8Z/5j+UNY1sWK1ChxpuwNS9I3R50cfdQo/lA9PPhw6XIg8ytdAAAAsJreM3qa3j\nN6AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6CgqyW\nmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08+HDpciDzK1\n0AAAAgSpP55ELdXswj9JRZAPRwtTfS4CNRqpKIs+28rNHiPAoAAAAXcGhwc2VjbGliLWdl\nbmVyYXRlZC1rZXkB\n-----END OPENSSH PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"encrypted-private-keys-2",children:"Encrypted Private Keys"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->withPassword('demo')->toString('OpenSSH')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAadYAW13\njKwd2h4/sgh9dvAAAAEAAAAAEAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlz\ndHAyNTYAAABBBKzycsRLtv6CgqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A\n1L0jdHnRx91Cj+UD08+HDpciDzK10AAACwkOE6duVEIZ9scCkgw3Q/SFIgyaU9f2K0UChk\nDZRCuS5jzwpw5cTvCuCBGocd9QtdZJPoiVxphzXdOfoaeKeWBE5rcLr7CYQyxhOyoZbJHP\nmBAQ0SmtdXOFvgr9SrgU04Czovt6/d50oDImbKvwtiH/QetzkIRDiSpUwpXLF118H67vXH\nNqH410tqKJYGAlKDZZV9HO68cQpUId4VlCn60Qt2Q0Ug3o0uBkg2M4erWks=\n-----END OPENSSH PRIVATE KEY-----\n"})}),"\n",(0,r.jsx)(n.h3,{id:"public-keys-2",children:"Public Keys"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('OpenSSH')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKzycsRLtv6CgqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08+HDpciDzK10= phpseclib-generated-key\n"})}),"\n",(0,r.jsx)(n.h2,{id:"jwk",children:"JWK"}),"\n",(0,r.jsx)(n.p,{children:'Note that the actual keys generated are not "beautified" as these examples are.'}),"\n",(0,r.jsx)(n.h3,{id:"private-keys-3",children:"Private Keys"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->toString('JWK')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n  "keys": [\n    {\n      "kty": "EC",\n      "crv": "P-256",\n      "x": "rPJyxEu2_oKCrJaaTVTrq39DKJ2XcN6W-k8UvGf-Y_k=",\n      "y": "Q1jWxYrUKHGm7A1L0jdHnRx91Cj-UD08-HDpciDzK10=",\n      "d": "SpP55ELdXswj9JRZAPRwtTfS4CNRqpKIs-28rNHiPAo="\n    }\n  ]\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"public-keys-3",children:"Public Keys"}),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('JWK')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n  "keys": [\n    {\n      "kty": "EC",\n      "crv": "P-256",\n      "x": "rPJyxEu2_oKCrJaaTVTrq39DKJ2XcN6W-k8UvGf-Y_k=",\n      "y": "Q1jWxYrUKHGm7A1L0jdHnRx91Cj-UD08-HDpciDzK10="\n    }\n  ]\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"xml",children:"XML"}),"\n",(0,r.jsx)(n.h3,{id:"public-keys-4",children:"Public Keys"}),"\n",(0,r.jsx)(n.h4,{id:"regular-ecdsakeyvalues",children:"Regular ECDSAKeyValues"}
1),"\n",(0,r.jsxs)(n.p,{children:["Generated with ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('XML')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-xml",children:'<ECDSAKeyValue xmlns="http://www.w3.org/2009/xmldsig11#">\n  <NamedCurve URI="urn:oid:1.2.840.10045.3.1.7" />\n  <PublicKey>BKzycsRLtv6CgqyWmk1U66t/Qyidl3DelvpPFLxn/mP5Q1jWxYrUKHGm7A1L0jdHnRx91Cj+UD08+HDpciDzK10=</PublicKey>\n</ECDSAKeyValue>\n'})}),"\n",(0,r.jsx)(n.h4,{id:"rfc4050-formatted-ecdsakeyvalues",children:"RFC4050 formatted ECDSAKeyValues"}),"\n",(0,r.jsxs)(n.p,{children:["Generated by doing ",(0,r.jsx)(n.code,{children:"\\phpseclib4\\Crypt\\EC\\Formats\\Keys\\XML::enableRFC4050Syntax()"})," and then ",(0,r.jsx)(n.code,{children:"$key->getPublicKey()->toString('XML')"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-xml",children:'<ECDSAKeyValue xmlns="http://www.w3.org/2001/04/xmldsig-more#">\n  <DomainParameters>\n    <NamedCurve URN="urn:oid:1.2.840.10045.3.1.7" />\n  </DomainParameters>\n  <PublicKey>\n    <X Value="78226179037204970007758573525096590005539509111629919618136274592348755616761" />\n    <Y Value="30461925696227425434068699083275029164946463271650913121991290383387057138525" />\n  </PublicKey>\n</ECDSAKeyValue>\n'})})]})}function p(e={}){let{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453(e,n,d){d.d(n,{R:()=>A,x:()=>c});var i=d(6540);let r={},s=i.createContext(r);function A(e){let n=i.useContext(s);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:A(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.