0
0
Fork 0

add pem support to public key

This adds pem support to public keys which can now be handled the same
way as private keys.
This commit is contained in:
Gibheer 2015-02-17 21:43:21 +01:00
parent 930035ce91
commit 53327f7467
4 changed files with 19 additions and 4 deletions

View File

@ -1,4 +1,4 @@
package pkilib
package pki
import (
"crypto"
@ -63,6 +63,14 @@ func (pr EcdsaPrivateKey) MarshalPem() (marshalledPemBlock, error) {
return pem.EncodeToMemory(&pem_block), nil
}
// marshal the public key to a pem block
func (pu *EcdsaPublicKey) MarshalPem() (marshalledPemBlock, error) {
asn1, err := x509.MarshalPKIXPublicKey(pu.public_key)
if err != nil { return nil, err }
pem_block := pem.Block{Type: PemLabelPublic, Bytes: asn1}
return pem.EncodeToMemory(&pem_block), nil
}
// verify a message using the ecdsa public key
func (pu *EcdsaPublicKey) Verify(message []byte, signature []byte) (bool, error) {
return false, errors.New("not implemented yet!")

View File

@ -1,4 +1,4 @@
package pkilib
package pki
import (
"io"

6
rsa.go
View File

@ -1,4 +1,4 @@
package pkilib
package pki
import (
"crypto"
@ -49,6 +49,10 @@ func (pr RsaPrivateKey) MarshalPem() (marshalledPemBlock, error) {
return nil, errors.New("not implemented yet!")
}
func (pu *RsaPublicKey) MarshalPem() (marshalledPemBlock, error) {
return nil, errors.New("not implemented yet!")
}
func (pu *RsaPublicKey) Verify(message []byte, signature []byte) (bool, error) {
return false, errors.New("not implemented yet!")
}

View File

@ -1,4 +1,4 @@
package pkilib
package pki
import (
"crypto"
@ -7,6 +7,8 @@ import (
// this file holds all the interfaces used in the program until it can be split
// properly
const PemLabelPublic = "PUBLIC KEY"
type (
// interface for any private key
PrivateKey interface {
@ -21,6 +23,7 @@ type (
// interface for any public key
PublicKey interface {
Pemmer
// use the public key to verify a message against a signature
Verify(message []byte, signature []byte) (bool, error)
}