aboutsummaryrefslogblamecommitdiff
path: root/private_key.go
blob: 0591e1874f6cb215ea9f0c8738301d0b67dbb1b2 (plain) (tree)
1
2
3
4
5
6
7
8
9


            
          
                          

 

                                                   

                                                           
 
 

                                                                                
                                                              
                                                             
                 
                                              


                                     
                                                          
                 
                                            



                                     
 












                                                                         
package main

import (
  "errors"
  "github.com/gibheer/pki"
)

var (
  ErrNoPKFound = errors.New("no private key found")
  ErrNoPUFound = errors.New("no public key found")
  ErrUnknownFormat = errors.New("key is an unknown format")
)

// Read the private key from the path and try to figure out which type of key it
// might be.
func ReadPrivateKeyFile(path string) (pki.PrivateKey, error) {
  raw_pk, err := readSectionFromFile(path, pki.PemLabelEcdsa)
  if err == nil {
    pk, err := pki.LoadPrivateKeyEcdsa(raw_pk)
    if err != nil { return nil, err }
    return pk, nil
  }
  raw_pk, err = readSectionFromFile(path, pki.PemLabelRsa)
  if err == nil {
    pk, err := pki.LoadPrivateKeyRsa(raw_pk)
    if err != nil { return nil, err }
    return pk, nil
  }
  return nil, ErrNoPKFound
}

// read the public key and try to figure out what kind of key it might be
func ReadPublicKeyFile(path string) (pki.PublicKey, error) {
  raw_pu, err := readSectionFromFile(path, pki.PemLabelPublic)
  if err != nil { return nil, ErrNoPUFound }

  var public pki.PublicKey
  public, err = pki.LoadPublicKeyEcdsa(raw_pu)
  if err == nil { return public, nil }
  public, err = pki.LoadPublicKeyRsa(raw_pu)
  if err == nil { return public, nil }
  return nil, ErrUnknownFormat
}