space monkey internal commit export

[katamari commit: 6ac6e9c5673cfc54ebe8f5981d37fa0d71ca7a30]
This commit is contained in:
JT Olds
2014-03-24 14:55:22 -06:00
parent 3124c9db31
commit b42853e994
5 changed files with 99 additions and 18 deletions

49
pem.go
View File

@@ -194,8 +194,8 @@ func (key *pKey) MarshalPKIXPublicKeyDER() (der_block []byte,
return ioutil.ReadAll(asAnyBio(bio))
}
// LoadPrivateKey loads a private key from a PEM-encoded block.
func LoadPrivateKey(pem_block []byte) (PrivateKey, error) {
// LoadPrivateKeyFromPEM loads a private key from a PEM-encoded block.
func LoadPrivateKeyFromPEM(pem_block []byte) (PrivateKey, error) {
if len(pem_block) == 0 {
return nil, errors.New("empty pem block")
}
@@ -229,8 +229,8 @@ func LoadPrivateKey(pem_block []byte) (PrivateKey, error) {
return p, nil
}
// LoadPublicKey loads a public key from a PEM-encoded block.
func LoadPublicKey(pem_block []byte) (PublicKey, error) {
// LoadPublicKeyFromPEM loads a public key from a PEM-encoded block.
func LoadPublicKeyFromPEM(pem_block []byte) (PublicKey, error) {
if len(pem_block) == 0 {
return nil, errors.New("empty pem block")
}
@@ -241,7 +241,42 @@ func LoadPublicKey(pem_block []byte) (PublicKey, error) {
}
defer C.BIO_free(bio)
rsakey := C.PEM_read_bio_RSAPublicKey(bio, nil, nil, nil)
rsakey := C.PEM_read_bio_RSA_PUBKEY(bio, nil, nil, nil)
if rsakey == nil {
return nil, errors.New("failed reading rsa key")
}
defer C.RSA_free(rsakey)
// convert to PKEY
key := C.EVP_PKEY_new()
if key == nil {
return nil, errors.New("failed converting to evp_pkey")
}
if C.EVP_PKEY_set1_RSA(key, (*C.struct_rsa_st)(rsakey)) != 1 {
C.EVP_PKEY_free(key)
return nil, errors.New("failed converting to evp_pkey")
}
p := &pKey{key: key}
runtime.SetFinalizer(p, func(p *pKey) {
C.EVP_PKEY_free(p.key)
})
return p, nil
}
// LoadPublicKeyFromDER loads a public key from a DER-encoded block.
func LoadPublicKeyFromDER(der_block []byte) (PublicKey, error) {
if len(der_block) == 0 {
return nil, errors.New("empty der block")
}
bio := C.BIO_new_mem_buf(unsafe.Pointer(&der_block[0]),
C.int(len(der_block)))
if bio == nil {
return nil, errors.New("failed creating bio")
}
defer C.BIO_free(bio)
rsakey := C.d2i_RSA_PUBKEY_bio(bio, nil)
if rsakey == nil {
return nil, errors.New("failed reading rsa key")
}
@@ -269,8 +304,8 @@ type Certificate struct {
ref interface{}
}
// LoadCertificate loads an X509 certificate from a PEM-encoded block.
func LoadCertificate(pem_block []byte) (*Certificate, error) {
// LoadCertificateFromPEM loads an X509 certificate from a PEM-encoded block.
func LoadCertificateFromPEM(pem_block []byte) (*Certificate, error) {
if len(pem_block) == 0 {
return nil, errors.New("empty pem block")
}