mirror of
https://github.com/gregtwallace/apc-p15-tool.git
synced 2025-06-07 20:36:51 +00:00
add ecdsa key support and enable 4,092 RSA
* apcssh: add descriptive error when required file(s) not passed * create: dont create key+cert file when key isn't supported by NMC2 * config: fix usage messages re: key types * p15 files: dont generate key+cert when it isn't needed (aka NMC2 doesn't support key) * pkcs15: pre-calculate envelope when making the p15 struct * pkcs15: omit key ID 8 & 9 from EC keys * pkcs15: update key decode logic * pkcs15: add key type value for easy determination of compatibility * pkcs15: add ec key support * pkcs15: separate functions for key and key+cert p15 files * update README see: https://github.com/gregtwallace/apc-p15-tool/issues/6
This commit is contained in:
parent
b8e9a23386
commit
40eca754e0
12 changed files with 508 additions and 266 deletions
pkg/apcssh
|
@ -1,10 +1,13 @@
|
|||
package apcssh
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var errSSLMissingData = errors.New("apcssh: ssl cert install: cant install nil data (unsupported key/nmc version/nmc firmware combo?)")
|
||||
|
||||
// InstallSSLCert installs the specified p15 key and p15 cert files on the
|
||||
// UPS. It has logic to deduce if the NMC is a newer version (e.g., NMC3 with
|
||||
// newer firmware) and acts accordingly.
|
||||
|
@ -29,6 +32,11 @@ func (cli *Client) InstallSSLCert(keyP15 []byte, certPem []byte, keyCertP15 []by
|
|||
// installSSLCertModern installs the SSL key and certificate using the UPS built-in
|
||||
// command `ssl`. This command is not present on older devices (e.g., NMC2) or firmwares.
|
||||
func (cli *Client) installSSLCertModern(keyP15 []byte, certPem []byte) error {
|
||||
// fail if required data isn't present
|
||||
if keyP15 == nil || len(keyP15) <= 0 || certPem == nil || len(certPem) <= 0 {
|
||||
return errSSLMissingData
|
||||
}
|
||||
|
||||
// upload the key P15 file
|
||||
err := cli.UploadSCP("/ssl/nmc.key", keyP15, 0600)
|
||||
if err != nil {
|
||||
|
@ -63,6 +71,11 @@ func (cli *Client) installSSLCertModern(keyP15 []byte, certPem []byte) error {
|
|||
// them to a .p15 file on the UPS. This is used for older devices (e.g., NMC2) and
|
||||
// firmwares that do not support the `ssl` command.
|
||||
func (cli *Client) installSSLCertLegacy(keyCertP15 []byte) error {
|
||||
// fail if required data isn't present
|
||||
if keyCertP15 == nil || len(keyCertP15) <= 0 {
|
||||
return errSSLMissingData
|
||||
}
|
||||
|
||||
// upload/install keyCert P15 file
|
||||
err := cli.UploadSCP("/ssl/defaultcert.p15", keyCertP15, 0600)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue