{"_id":"@didkovsky/keys-converter","name":"@didkovsky/keys-converter","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@didkovsky/keys-converter","version":"1.0.0","author":{"name":"Sergey Didkovsky","email":"didkovsky.dev@proton.me"},"description":"Converter for elliptic curves public and priveta keys from simple binary to PEM and DER formats.","main":"./lib/index.js","directories":{"lib":"lib","test":"test","exaples":"examples"},"scripts":{"test":"metatests test/"},"keywords":["key converter","pem","der","elliptic curves","SM2","brainpoolP160r1","brainpoolP160t1","brainpoolP192r1","brainpoolP192t1","brainpoolP224r1","brainpoolP224t1","brainpoolP256r1","brainpoolP256t1","brainpoolP320r1","brainpoolP320t1","brainpoolP384r1","brainpoolP384t1","brainpoolP512r1","brainpoolP512t1","c2pnb163v1","c2pnb163v2","c2pnb163v3","c2pnb208w1","c2pnb272w1","c2pnb304w1","c2pnb368w1","c2tnb191v1","c2tnb191v2","c2tnb191v3","c2tnb239v1","c2tnb239v2","c2tnb239v3","c2tnb359v1","c2tnb431r1","prime192v1","prime192v2","prime192v3","prime239v1","prime239v2","prime239v3","prime256v1","secp112r1","secp112r2","secp128r1","secp128r2","secp160k1","secp160r1","secp160r2","secp192k1","secp224k1","secp224r1","secp256k1","secp384r1","secp521r1","sect113r1","sect113r2","sect131r1","sect131r2","sect163k1","sect163r1","sect163r2","sect193r1","sect193r2","sect233k1","sect233r1","sect239k1","sect283k1","sect283r1","sect409k1","sect409r1","sect571k1","sect571r1","wap-wsg-idm-ecid-wtls1","wap-wsg-idm-ecid-wtls10","wap-wsg-idm-ecid-wtls11","wap-wsg-idm-ecid-wtls12","wap-wsg-idm-ecid-wtls3","wap-wsg-idm-ecid-wtls4","wap-wsg-idm-ecid-wtls5","wap-wsg-idm-ecid-wtls6","wap-wsg-idm-ecid-wtls7","wap-wsg-idm-ecid-wtls8","wap-wsg-idm-ecid-wtls9"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/didkovsky/keys-converter.git"},"bugs":{"url":"https://github.com/didkovsky/keys-converter/issues","email":"didkovsky.dev@proton.me"},"homepage":"https://github.com/didkovsky/keys-converter#readme","dependencies":{"@didkovsky/metatype":"^1.0.0"},"devDependencies":{"metatests":"^0.8.2"},"gitHead":"1a9149564ac60d4e908a39e91b8bdb86c62f894b","_id":"@didkovsky/keys-converter@1.0.0","_nodeVersion":"17.6.0","_npmVersion":"8.5.1","dist":{"integrity":"sha512-TYSKsMoRIUdPlDqLd3uzEcZ7HCRfPjUoNfXgKsiLZ7Q7FXfpP4928c1jIadfZqk4FUyRk7cjFNg+WcAYjc9RSA==","shasum":"94498a0b7489b56ca79c9e1031c730d3d60b45dd","tarball":"https://registry.npmjs.org/@didkovsky/keys-converter/-/keys-converter-1.0.0.tgz","fileCount":17,"unpackedSize":50577,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6TmNaO363w3hWWZ2Fr4FbFXe8znOJwez3CqGsK3J8GAiEA6cpK4T0E2N1pr2DCTAiMKRSw4dupCIdicmCjksrjeLw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJje1a7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3bA//fXhh6OSKLGNKZ8sAMRji7EPm0qTJOslq7uUuQ2CwNsAt2sIL\r\nTtcgHTu0+fuCUMpViKt5nILN+xYrUjciHI3SDGxIs23F+rTM4sfAioaJNWAy\r\n17GzMTJ+fkZCr9zVgy16+GtKAXqbt829ZZ2xAZd+dWw02GMYx16VhWXgiG+J\r\n+dYlPs/i0DnM1lkL+cc7qsyWqBmYCXPmotiNRzr+DA8XIG5LTRO94Bde6tM/\r\npsMRjvtIXWjS7FrcLirsINlkThsYc7BCYcb2VJCnKT0O3A5SeIiWFYyly6zn\r\nhzFN7qkXt6qMoYDEeMGcy7ex0nn7IEEaQSbXOIxqe0LoamIkQsF6YDfDcIQS\r\nIZVapGaniutrNCt2CEo+G/Dp73XqxEWk23NHAHFKYkNJaY7PR9GhNg7ZHDg6\r\ngzlAOqMyz2E71RWYE9dAdbk+zqHks+owazZwkqN9ZvRrzRnmbDC0e0XK9+4Y\r\nhTmsbVBg7sfGVrdfEZxGQYo6Gmd59PhzhpM348x/D76WDzn/T8eTdiPAarMe\r\noKez0NsJEGjNHbbBHrGR2Sw4qobR0z10fOyLCYUhjLEK0ioMlKL8ub4ARseW\r\nVSHiWVKdWXnXNopK93VDp2GIeq566DixJVAaTNdrvGlVd/c20K2+ygkJW9QY\r\nCN0e3SQt36K6aRLRu1wieBRWea0B1lCAM9A=\r\n=XSRY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"didkovsky","email":"didkovsky.git@mailfence.com"},"maintainers":[{"name":"didkovsky","email":"didkovsky.git@mailfence.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keys-converter_1.0.0_1669027515149_0.7776509108280412"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-21T10:45:15.022Z","1.0.0":"2022-11-21T10:45:15.378Z","modified":"2022-11-21T10:45:15.540Z"},"maintainers":[{"name":"didkovsky","email":"didkovsky.git@mailfence.com"}],"description":"Converter for elliptic curves public and priveta keys from simple binary to PEM and DER formats.","homepage":"https://github.com/didkovsky/keys-converter#readme","keywords":["key converter","pem","der","elliptic curves","SM2","brainpoolP160r1","brainpoolP160t1","brainpoolP192r1","brainpoolP192t1","brainpoolP224r1","brainpoolP224t1","brainpoolP256r1","brainpoolP256t1","brainpoolP320r1","brainpoolP320t1","brainpoolP384r1","brainpoolP384t1","brainpoolP512r1","brainpoolP512t1","c2pnb163v1","c2pnb163v2","c2pnb163v3","c2pnb208w1","c2pnb272w1","c2pnb304w1","c2pnb368w1","c2tnb191v1","c2tnb191v2","c2tnb191v3","c2tnb239v1","c2tnb239v2","c2tnb239v3","c2tnb359v1","c2tnb431r1","prime192v1","prime192v2","prime192v3","prime239v1","prime239v2","prime239v3","prime256v1","secp112r1","secp112r2","secp128r1","secp128r2","secp160k1","secp160r1","secp160r2","secp192k1","secp224k1","secp224r1","secp256k1","secp384r1","secp521r1","sect113r1","sect113r2","sect131r1","sect131r2","sect163k1","sect163r1","sect163r2","sect193r1","sect193r2","sect233k1","sect233r1","sect239k1","sect283k1","sect283r1","sect409k1","sect409r1","sect571k1","sect571r1","wap-wsg-idm-ecid-wtls1","wap-wsg-idm-ecid-wtls10","wap-wsg-idm-ecid-wtls11","wap-wsg-idm-ecid-wtls12","wap-wsg-idm-ecid-wtls3","wap-wsg-idm-ecid-wtls4","wap-wsg-idm-ecid-wtls5","wap-wsg-idm-ecid-wtls6","wap-wsg-idm-ecid-wtls7","wap-wsg-idm-ecid-wtls8","wap-wsg-idm-ecid-wtls9"],"repository":{"type":"git","url":"git+https://github.com/didkovsky/keys-converter.git"},"author":{"name":"Sergey Didkovsky","email":"didkovsky.dev@proton.me"},"bugs":{"url":"https://github.com/didkovsky/keys-converter/issues","email":"didkovsky.dev@proton.me"},"license":"MIT","readme":"# Elliptic curve's keys converter\n\nTool that can convert binary private or public key to `pem` and `der` formats. Also includes factory for KeyObject from `@node/crypto`.\n\n## Install\n```sh\nnpm i @didkovsky/keys-converter\n```\n\n## Example\n\nrandom private key for (secp256k1)\n```\n9d8ce6ab12507d729b9d160d352a0be329ec73dbc8afa65d6e5570bb14a8f71f\n```\n\npem\n```\n-----BEGIN EC PRIVATE KEY-----\nMHQCAQEEIJ2M5qsSUH1ym50WDTUqC+Mp7HPbyK+mXW5VcLsUqPcfoAcGBSuBBAAK\noUQDQgAE4zjQ9EYcK1uUoF/eCboVjNVlCOFH58VV6RmyZfZzpSrQjltCJQVubOmt\nLLD1FWKZv76d4H4UNc/0mN0LkMKGDw==\n-----END EC PRIVATE KEY-----\n```\n\nder (hex)\n```\n307402010104209d8ce6ab12507d729b9d160d352a0be329ec73dbc8afa65d6e5570bb14a8f71fa00706052b8104000aa14403420004e338d0f4461c2b5b94a05fde09ba158cd56508e147e7c555e919b265f673a52ad08e5b4225056e6ce9ad2cb0f5156299bfbe9de07e1435cff498dd0b90c2860f\n```\n\n## Supported curves\n\n| Name | Priv length (bytes) | Pub length (bytes) | Priv header | Priv options | Pub header |\n| --- | --- | --- | --- | --- | --- |\n| SM2 | 32 | 65 | 0x30770201010420 | 0xa00a06082a811ccf5501822da144034200 | 0x3059301306072a8648ce3d020106082a811ccf5501822d034200 | \n| brainpoolP160r1 | 20 | 41 | 0x30540201010414 | 0xa00b06092b2403030208010101a12c032a00 | 0x3042301406072a8648ce3d020106092b2403030208010101032a00 | \n| brainpoolP160t1 | 20 | 41 | 0x30540201010414 | 0xa00b06092b2403030208010102a12c032a00 | 0x3042301406072a8648ce3d020106092b2403030208010102032a00 | \n| brainpoolP192r1 | 24 | 49 | 0x30600201010418 | 0xa00b06092b2403030208010103a134033200 | 0x304a301406072a8648ce3d020106092b2403030208010103033200 | \n| brainpoolP192t1 | 24 | 49 | 0x30600201010418 | 0xa00b06092b2403030208010104a134033200 | 0x304a301406072a8648ce3d020106092b2403030208010104033200 | \n| brainpoolP224r1 | 28 | 57 | 0x306c020101041c | 0xa00b06092b2403030208010105a13c033a00 | 0x3052301406072a8648ce3d020106092b2403030208010105033a00 | \n| brainpoolP224t1 | 28 | 57 | 0x306c020101041c | 0xa00b06092b2403030208010106a13c033a00 | 0x3052301406072a8648ce3d020106092b2403030208010106033a00 | \n| brainpoolP256r1 | 32 | 65 | 0x30780201010420 | 0xa00b06092b2403030208010107a144034200 | 0x305a301406072a8648ce3d020106092b2403030208010107034200 | \n| brainpoolP256t1 | 32 | 65 | 0x30780201010420 | 0xa00b06092b2403030208010108a144034200 | 0x305a301406072a8648ce3d020106092b2403030208010108034200 | \n| brainpoolP320r1 | 40 | 81 | 0x3081900201010428 | 0xa00b06092b2403030208010109a154035200 | 0x306a301406072a8648ce3d020106092b2403030208010109035200 | \n| brainpoolP320t1 | 40 | 81 | 0x3081900201010428 | 0xa00b06092b240303020801010aa154035200 | 0x306a301406072a8648ce3d020106092b240303020801010a035200 | \n| brainpoolP384r1 | 48 | 97 | 0x3081a80201010430 | 0xa00b06092b240303020801010ba164036200 | 0x307a301406072a8648ce3d020106092b240303020801010b036200 | \n| brainpoolP384t1 | 48 | 97 | 0x3081a80201010430 | 0xa00b06092b240303020801010ca164036200 | 0x307a301406072a8648ce3d020106092b240303020801010c036200 | \n| brainpoolP512r1 | 64 | 129 | 0x3081da0201010440 | 0xa00b06092b240303020801010da1818503818200 | 0x30819b301406072a8648ce3d020106092b240303020801010d03818200 | \n| brainpoolP512t1 | 64 | 129 | 0x3081da0201010440 | 0xa00b06092b240303020801010ea1818503818200 | 0x30819b301406072a8648ce3d020106092b240303020801010e03818200 | \n| c2pnb163v1 | 21 | 43 | 0x30560201010415 | 0xa00a06082a8648ce3d030001a12e032c00 | 0x3043301306072a8648ce3d020106082a8648ce3d030001032c00 | \n| c2pnb163v2 | 21 | 43 | 0x30560201010415 | 0xa00a06082a8648ce3d030002a12e032c00 | 0x3043301306072a8648ce3d020106082a8648ce3d030002032c00 | \n| c2pnb163v3 | 21 | 43 | 0x30560201010415 | 0xa00a06082a8648ce3d030003a12e032c00 | 0x3043301306072a8648ce3d020106082a8648ce3d030003032c00 | \n| c2pnb208w1 | 24 | 53 | 0x3064020101041900 | 0xa00a06082a8648ce3d03000aa138033600 | 0x304d301306072a8648ce3d020106082a8648ce3d03000a033600 | \n| c2pnb272w1 | 32 | 69 | 0x307c020101042100 | 0xa00a06082a8648ce3d030010a148034600 | 0x305d301306072a8648ce3d020106082a8648ce3d030010034600 | \n| c2pnb304w1 | 36 | 77 | 0x308188020101042500 | 0xa00a06082a8648ce3d030011a150034e00 | 0x3065301306072a8648ce3d020106082a8648ce3d030011034e00 | \n| c2pnb368w1 | 44 | 93 | 0x3081a0020101042d00 | 0xa00a06082a8648ce3d030013a160035e00 | 0x3075301306072a8648ce3d020106082a8648ce3d030013035e00 | \n| c2tnb191v1 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030005a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030005033200 | \n| c2tnb191v2 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030006a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030006033200 | \n| c2tnb191v3 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030007a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030007033200 | \n| c2tnb239v1 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d03000ba140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d03000b033e00 | \n| c2tnb239v2 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d03000ca140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d03000c033e00 | \n| c2tnb239v3 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d03000da140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d03000d033e00 | \n| c2tnb359v1 | 45 | 91 | 0x30819e020101042d | 0xa00a06082a8648ce3d030012a15e035c00 | 0x3073301306072a8648ce3d020106082a8648ce3d030012035c00 | \n| c2tnb431r1 | 53 | 109 | 0x3081b80201010435 | 0xa00a06082a8648ce3d030014a170036e00 | 0x308185301306072a8648ce3d020106082a8648ce3d030014036e00 | \n| prime192v1 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030101a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030101033200 | \n| prime192v2 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030102a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030102033200 | \n| prime192v3 | 24 | 49 | 0x305f0201010418 | 0xa00a06082a8648ce3d030103a134033200 | 0x3049301306072a8648ce3d020106082a8648ce3d030103033200 | \n| prime239v1 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d030104a140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d030104033e00 | \n| prime239v2 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d030105a140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d030105033e00 | \n| prime239v3 | 30 | 61 | 0x3071020101041e | 0xa00a06082a8648ce3d030106a140033e00 | 0x3055301306072a8648ce3d020106082a8648ce3d030106033e00 | \n| prime256v1 | 32 | 65 | 0x30770201010420 | 0xa00a06082a8648ce3d030107a144034200 | 0x3059301306072a8648ce3d020106082a8648ce3d030107034200 | \n| secp112r1 | 14 | 29 | 0x303e020101040e | 0xa00706052b81040006a120031e00 | 0x3032301006072a8648ce3d020106052b81040006031e00 | \n| secp112r2 | 14 | 29 | 0x303e020101040e | 0xa00706052b81040007a120031e00 | 0x3032301006072a8648ce3d020106052b81040007031e00 | \n| secp128r1 | 16 | 33 | 0x30440201010410 | 0xa00706052b8104001ca124032200 | 0x3036301006072a8648ce3d020106052b8104001c032200 | \n| secp128r2 | 16 | 33 | 0x30440201010410 | 0xa00706052b8104001da124032200 | 0x3036301006072a8648ce3d020106052b8104001d032200 | \n| secp160k1 | 20 | 41 | 0x3051020101041500 | 0xa00706052b81040009a12c032a00 | 0x303e301006072a8648ce3d020106052b81040009032a00 | \n| secp160r1 | 20 | 41 | 0x3051020101041500 | 0xa00706052b81040008a12c032a00 | 0x303e301006072a8648ce3d020106052b81040008032a00 | \n| secp160r2 | 20 | 41 | 0x3051020101041500 | 0xa00706052b8104001ea12c032a00 | 0x303e301006072a8648ce3d020106052b8104001e032a00 | \n| secp192k1 | 24 | 49 | 0x305c0201010418 | 0xa00706052b8104001fa134033200 | 0x3046301006072a8648ce3d020106052b8104001f033200 | \n| secp224k1 | 28 | 57 | 0x3069020101041d00 | 0xa00706052b81040020a13c033a00 | 0x304e301006072a8648ce3d020106052b81040020033a00 | \n| secp224r1 | 28 | 57 | 0x3068020101041c | 0xa00706052b81040021a13c033a00 | 0x304e301006072a8648ce3d020106052b81040021033a00 | \n| secp256k1 | 32 | 65 | 0x30740201010420 | 0xa00706052b8104000aa144034200 | 0x3056301006072a8648ce3d020106052b8104000a034200 | \n| secp384r1 | 48 | 97 | 0x3081a40201010430 | 0xa00706052b81040022a164036200 | 0x3076301006072a8648ce3d020106052b81040022036200 | \n| secp521r1 | 66 | 133 | 0x3081dc0201010442 | 0xa00706052b81040023a1818903818600 | 0x30819b301006072a8648ce3d020106052b8104002303818600 | \n| sect113r1 | 14 | 31 | 0x3041020101040f00 | 0xa00706052b81040004a122032000 | 0x3034301006072a8648ce3d020106052b81040004032000 | \n| sect113r2 | 14 | 31 | 0x3041020101040f00 | 0xa00706052b81040005a122032000 | 0x3034301006072a8648ce3d020106052b81040005032000 | \n| sect131r1 | 17 | 35 | 0x30470201010411 | 0xa00706052b81040016a126032400 | 0x3038301006072a8648ce3d020106052b81040016032400 | \n| sect131r2 | 17 | 35 | 0x30470201010411 | 0xa00706052b81040017a126032400 | 0x3038301006072a8648ce3d020106052b81040017032400 | \n| sect163k1 | 21 | 43 | 0x30530201010415 | 0xa00706052b81040001a12e032c00 | 0x3040301006072a8648ce3d020106052b81040001032c00 | \n| sect163r1 | 21 | 43 | 0x30530201010415 | 0xa00706052b81040002a12e032c00 | 0x3040301006072a8648ce3d020106052b81040002032c00 | \n| sect163r2 | 21 | 43 | 0x30530201010415 | 0xa00706052b8104000fa12e032c00 | 0x3040301006072a8648ce3d020106052b8104000f032c00 | \n| sect193r1 | 24 | 51 | 0x305f020101041900 | 0xa00706052b81040018a136033400 | 0x3048301006072a8648ce3d020106052b81040018033400 | \n| sect193r2 | 24 | 51 | 0x305f020101041900 | 0xa00706052b81040019a136033400 | 0x3048301006072a8648ce3d020106052b81040019033400 | \n| sect233k1 | 29 | 61 | 0x306d020101041d | 0xa00706052b8104001aa140033e00 | 0x3052301006072a8648ce3d020106052b8104001a033e00 | \n| sect233r1 | 29 | 61 | 0x306e020101041e00 | 0xa00706052b8104001ba140033e00 | 0x3052301006072a8648ce3d020106052b8104001b033e00 | \n| sect239k1 | 30 | 61 | 0x306e020101041e | 0xa00706052b81040003a140033e00 | 0x3052301006072a8648ce3d020106052b81040003033e00 | \n| sect283k1 | 36 | 73 | 0x3081800201010424 | 0xa00706052b81040010a14c034a00 | 0x305e301006072a8648ce3d020106052b81040010034a00 | \n| sect283r1 | 36 | 73 | 0x3081800201010424 | 0xa00706052b81040011a14c034a00 | 0x305e301006072a8648ce3d020106052b81040011034a00 | \n| sect409k1 | 51 | 105 | 0x3081af0201010433 | 0xa00706052b81040024a16c036a00 | 0x307e301006072a8648ce3d020106052b81040024036a00 | \n| sect409r1 | 51 | 105 | 0x3081b0020101043400 | 0xa00706052b81040025a16c036a00 | 0x307e301006072a8648ce3d020106052b81040025036a00 | \n| sect571k1 | 72 | 145 | 0x3081ee0201010448 | 0xa00706052b81040026a1819503819200 | 0x3081a7301006072a8648ce3d020106052b8104002603819200 | \n| sect571r1 | 72 | 145 | 0x3081ee0201010448 | 0xa00706052b81040027a1819503819200 | 0x3081a7301006072a8648ce3d020106052b8104002703819200 | \n| wap-wsg-idm-ecid-wtls1 | 14 | 31 | 0x3040020101040e | 0xa0070605672b010401a122032000 | 0x3034301006072a8648ce3d02010605672b010401032000 | \n| wap-wsg-idm-ecid-wtls10 | 29 | 61 | 0x306d020101041d | 0xa0070605672b01040aa140033e00 | 0x3052301006072a8648ce3d02010605672b01040a033e00 | \n| wap-wsg-idm-ecid-wtls11 | 29 | 61 | 0x306e020101041e00 | 0xa0070605672b01040ba140033e00 | 0x3052301006072a8648ce3d02010605672b01040b033e00 | \n| wap-wsg-idm-ecid-wtls12 | 28 | 57 | 0x3068020101041c | 0xa0070605672b01040ca13c033a00 | 0x304e301006072a8648ce3d02010605672b01040c033a00 | \n| wap-wsg-idm-ecid-wtls3 | 21 | 43 | 0x30530201010415 | 0xa0070605672b010403a12e032c00 | 0x3040301006072a8648ce3d02010605672b010403032c00 | \n| wap-wsg-idm-ecid-wtls4 | 14 | 31 | 0x3041020101040f00 | 0xa0070605672b010404a122032000 | 0x3034301006072a8648ce3d02010605672b010404032000 | \n| wap-wsg-idm-ecid-wtls5 | 21 | 43 | 0x30530201010415 | 0xa0070605672b010405a12e032c00 | 0x3040301006072a8648ce3d02010605672b010405032c00 | \n| wap-wsg-idm-ecid-wtls6 | 14 | 29 | 0x303e020101040e | 0xa0070605672b010406a120031e00 | 0x3032301006072a8648ce3d02010605672b010406031e00 | \n| wap-wsg-idm-ecid-wtls7 | 20 | 41 | 0x3051020101041500 | 0xa0070605672b010407a12c032a00 | 0x303e301006072a8648ce3d02010605672b010407032a00 | \n| wap-wsg-idm-ecid-wtls8 | 14 | 29 | 0x303f020101040f00 | 0xa0070605672b010408a120031e00 | 0x3032301006072a8648ce3d02010605672b010408031e00 | \n| wap-wsg-idm-ecid-wtls9 | 20 | 41 | 0x3051020101041500 | 0xa0070605672b010409a12c032a00 | 0x303e301006072a8648ce3d02010605672b010409032a00 | \n\n# Usage\nSee <a href=\"https://github.com/didkovsky/keys-converter/tree/master/examples\">/examples</a> folder.\n\n## convert private key\n\n``` javascript\nconst { PrivConverter, getCurves } = require('@didkovsky/keys-converter')\n\n/**\n * Get list of supported curves\n */\nconst curves = getCurves()\n\n/**\n * Create converter for specified curve.\n */\nconst converter = PrivConverter.for(curves.secp256k1)\n\n/**\n * Some private key.\n */\nconst priv = Buffer.alloc(32, 0x1)\n\n/**\n * GetPem string.\n */\nconst pem = converter.toPem(priv)\n\n/*\n-----BEGIN EC PRIVATE KEY-----\nMHQCAQEEIAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBoAcGBSuBBAAK\noUQDQgAEG4TFVnsSZECZXT7VqroFZdceGDRgSBn/nBf16dXdB49wvq+PWItUFQf+\n1qZCxatC39+BIKf2Od5RItR6aajo0Q==\n-----END EC PRIVATE KEY-----\n*/\nconsole.log(pem)\n\n/**\n * Get der Buffer.\n */\nconst der = converter.toDer(priv)\n\n// Buffer(118) [Uint8Array] [ ... ]\nconsole.dir(der)\n\n/**\n * Get KeyObject from @node/crypto\n */\nconst keyObj = converter.toKeyObject(priv)\n\n// PrivateKeyObject { [Symbol(kKeyType)]: 'private' }\nconsole.dir(keyObj)\n\n```\n\n## convert public key\n\n``` javascript\nconst { PubConverter, getCurves } = require('@didkovsky/keys-converter')\nconst { createECDH } = require('crypto')\n\n/**\n * Get list of supported curves\n */\nconst curves = getCurves()\n\n/**\n * Create converter for specified curve.\n */\nconst converter = PubConverter.for(curves.secp256k1)\n\n/**\n * Create keypair\n */\nconst priv = Buffer.alloc(32, 0x1)\nconst ecdh = createECDH('secp256k1')\necdh.setPrivateKey(priv)\nconst pub = ecdh.getPublicKey()\n\n// BBuExVZ7EmRAmV0+1aq6BWXXHhg0YEgZ/5wX9enV3QePcL6vj1iLVBUH/tamQsWrQt/fgSCn9jneUSLUemmo6NE=\nconsole.log(pub.toString('base64'))\n\n/**\n * GetPem string.\n */\nconst pem = converter.toPem(pub)\n\n/*\n-----BEGIN PUBLIC KEY-----\nMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEG4TFVnsSZECZXT7VqroFZdceGDRgSBn/\nnBf16dXdB49wvq+PWItUFQf+1qZCxatC39+BIKf2Od5RItR6aajo0Q==\n-----END PUBLIC KEY-----\n*/\nconsole.log(pem)\n\n/**\n * Get der Buffer.\n */\nconst der = converter.toDer(pub)\n\n// Buffer(88) [Uint8Array] [ ... ]\nconsole.dir(der)\n\n/**\n * Get KeyObject from @node/crypto\n */\nconst keyObj = converter.toKeyObject(pub)\n\n// PublicKeyObject { [Symbol(kKeyType)]: 'public' }\nconsole.dir(keyObj)\n\n```\n\n## sign\nWith `createSign` from `@node/crypto`\n\n``` javascript\nconst { createSign } = require('crypto')\nconst { PrivConverter, getCurves } = require('@didkovsky/keys-converter')\n\n/**\n * Get list of supported curves\n */\nconst curves = getCurves()\n\n/**\n * Create converter for specified curve.\n */\nconst converter = PrivConverter.for(curves.secp256k1)\n \n/**\n * Some private key.\n */\nconst priv = Buffer.alloc(32, 0x1)\n\n/**\n * Get keyObject from @node/crypto\n */\nconst privObj = converter.toKeyObject(priv)\n\n/**\n * Signing some message.\n */\nconst message = 'Hello world!'\nconst signer = createSign('sha256')\nsigner.update(message).end()\nconst signature = signer.sign(privObj)\n\n// MEUCIDHplD47Iy3PaSspcMmAScvE8Acdwc+4nrlPJwq64oynAiEA5+kGFrOqaihg7OQekCae5eKNprwweT02cKNQ5MPBrAE=\nconsole.log(signature.toString('base64'))\n\n```\n\n## verify\nWith `createVerify` from `@node/crypto`\n\n``` javascript\nconst { createVerify } = require('crypto')\nconst { PubConverter, getCurves } = require('@didkovsky/keys-converter')\n\n/**\n * Get list of supported curves\n */\nconst curves = getCurves()\n\n/**\n * Create converter for specified curve.\n */\nconst converter = PubConverter.for(curves.secp256k1)\n\n/**\n * Raw public key in base64 (65 bytes)\n */\nconst pub = 'BBuExVZ7EmRAmV0+1aq6BWXXHhg0YEgZ/5wX9enV3QePcL6vj1iLVBUH/tamQsWrQt/fgSCn9jneUSLUemmo6NE='\n\n/**\n * Get keyObject from @node/crypto\n */\nconst pubObj = converter.toKeyObject(Buffer.from(pub, 'base64'))\n\n/**\n * Our test signature and message\n */\nconst message = 'Hello world!'\nconst signature = 'MEUCIDHplD47Iy3PaSspcMmAScvE8Acdwc+4nrlPJwq64oynAiEA5+kGFrOqaihg7OQekCae5eKNprwweT02cKNQ5MPBrAE='\n\n/**\n * Verifiyng signature\n */\nconst verifier = createVerify('sha256')\nverifier.update(message).end()\nconst result = verifier.verify(pubObj, Buffer.from(signature, 'base64'))\n\n// true\nconsole.log(result)\n\n```","readmeFilename":"README.md"}