more parsing: from private key file - not finished
This commit is contained in:
parent
2b4ac48354
commit
8ed6c8a8f4
4
TODO
4
TODO
|
@ -1,9 +1,9 @@
|
|||
Todo:
|
||||
Short term:
|
||||
* NSEC3 - need base32 for Nsec3
|
||||
* Parsing from strings, going with goyacc and own lexer
|
||||
* Testsuite - make it slightly better - put multiple tests inside 1 file
|
||||
* Cleanup the code
|
||||
* Tsig testing
|
||||
* Parsing from strings, going with goyacc and own lexer
|
||||
|
||||
Issues:
|
||||
* escaped dots in names \.
|
||||
|
|
|
@ -210,6 +210,8 @@ func TestTag(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestKeyGenRSA(t *testing.T) {
|
||||
|
||||
return // Tijdelijk uit TODO(mg)
|
||||
key := new(RR_DNSKEY)
|
||||
key.Hdr.Name = "miek.nl."
|
||||
key.Hdr.Rrtype = TypeDNSKEY
|
||||
|
|
37
keygen.go
37
keygen.go
|
@ -2,8 +2,9 @@ package dns
|
|||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"big"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"crypto/rsa"
|
||||
"crypto/rand"
|
||||
)
|
||||
|
@ -105,3 +106,37 @@ func (r *RR_DNSKEY) PrivateKeyString(p PrivateKey) (s string) {
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Read a private key file and create a public key and
|
||||
// return a private key
|
||||
func (r *RR_DNSKEY) PrivateKeySetString(s string) (PrivateKey, os.Error) {
|
||||
p := new(rsa.PrivateKey)
|
||||
var left, right string
|
||||
// Do we care about the order of things?
|
||||
n, err := fmt.Sscanf(s, "%s %s\n", &left, &right)
|
||||
n = n
|
||||
err = err
|
||||
switch left {
|
||||
case "Private-key-format:":
|
||||
if right != "v1.3" {
|
||||
return nil, &Error{Error: "v1.3 supported"}
|
||||
}
|
||||
case "Algorithm:":
|
||||
// simple switch on the string
|
||||
case "Modulus:":
|
||||
modulus, err := packBase64([]byte(right))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p.PublicKey.N.SetBytes(modulus)
|
||||
/*
|
||||
case "PublicExponent":
|
||||
publicExponent, err := packBase64([]byte(right))
|
||||
if err != nil {
|
||||
return nil,err
|
||||
}
|
||||
t.PublicKey.E = int(publicExponent)
|
||||
*/
|
||||
}
|
||||
return p, nil
|
||||
}
|
||||
|
|
|
@ -22,3 +22,28 @@ func TestConversion(t *testing.T) {
|
|||
println(SecondsToString(60)) // 1m
|
||||
println(SecondsToString(59)) // 59
|
||||
}
|
||||
|
||||
func TestPrivateKeyRead(t *testing.T) {
|
||||
a:=`Private-key-format: v1.3
|
||||
Algorithm: 5 (RSASHA1)
|
||||
Modulus: vyVjCzz87g3rg9vDj1NJ1tlFP7lEY2pEQLkWGXAFuZM6Fw/bNmEH/z3ybDfsJqx4QQ6YZXN8V2kbzY7oX+tExf6AMiMIcKYzEGwg5xBYFh33du4G+6kE/VzG906ubp
|
||||
aIEnrZOMTdGqE7OwptAqrqXe4uGXY99ZqNdqutOKQyIzs=
|
||||
PublicExponent: AQAB
|
||||
PrivateExponent: PFg/RoMAjt8SJVSyDoOK4itBs3Z34rLfzVchZPJ6vDWAt1soJ6jGb4xNBmE5SpRUeqVy80RcUvQ59NFTB0UtNo/zAXhC1RfKiFCNRFTyV3k6a9CMLPAU9g
|
||||
4peW91lw87HXnYALTC9bTiTAoMU3vKvNx80F5qfK7qY/N28S1PMeE=
|
||||
Prime1: +vPWyp37iUa7/LbhejOX/KdkhfwECUCdJF0uEePjaBCSf85xceEBzU89JFk9dCojtVqcI8xLKnRKRixg07Rc+Q==
|
||||
Prime2: wv2aVWr13Cq2vRkKiHlqqP9vihGuDN/kWfmXb7slJH3s2i9+yI7vepAlow9SY8lNHOqXibEaAFsP3aj5OAAS0w==
|
||||
Exponent1: sChCenBzhWV1yGvH0zQsWFpYogTKAISuyjvufvhtRTt82uJbmAjObwRUcxOBo+2Aq2kzeZ2Klf6TtLaqMXHGYQ==
|
||||
Exponent2: hXiKeAWrHXWveGj3qMtTkzKl6uCHPxDSgjQy0KxNlFkOE5uHMUmF62NYH/GQ9/UG79A0wm+T2MJ8bcIINaj3OQ==
|
||||
Coefficient: xzZBvs2/IT7+iRQdn9I4slRTg9ryIecx7oKEKYTOEeyL2qq7rfY/FwZGy3EqyA/3lrkfFLx76qOeqAmCTUaU4w==
|
||||
Created: 20101221142359
|
||||
Publish: 20101221142359
|
||||
Activate: 20101221142359`
|
||||
|
||||
a = a
|
||||
b := "Private-key-format: v1.3"
|
||||
|
||||
k := new(RR_DNSKEY)
|
||||
p,_ := k.PrivateKeySetString(b)
|
||||
p = p
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue