priv key parsing works also

This commit is contained in:
Miek Gieben 2011-07-15 17:41:26 +02:00
parent 385899c246
commit 77df52c2f2
2 changed files with 38 additions and 11 deletions

View File

@ -4,6 +4,7 @@ package dns
import (
"os"
"fmt"
"strings"
)
@ -13,19 +14,23 @@ import (
}%%
func Kparse(data string) (m map[string]string, err os.Error) {
cs, p, pe, eof := 0, 0, len(data), len(data)
cs, p, pe := 0, 0, len(data)
mark := 0
key := ""
k := ""
k=k
m = make(map[string]string)
%%{
action mark { mark = p }
action setKey { key = strings.ToLower(data[mark:p]) }
action setValue { m[key] = data[mark:p] }
action setKey { k = strings.ToLower(data[mark:p]); fmt.Printf("key {%s}\n", k) }
action setValue { m[k] = data[mark:p]; fmt.Printf("value {%s}\n", data[mark:p]) }
base64 = [a-zA-Z0-9.\\/+=() ]+ >mark;
key = (
('Private-key-format'i)
| ('Algorithm'i)
| ('Modules'i)
| ('Modulus'i)
| ('PublicExponent'i)
| ('PrivateExponent'i)
| ('Prime1'i)
@ -36,12 +41,12 @@ func Kparse(data string) (m map[string]string, err os.Error) {
| ('Created'i)
| ('Publish'i)
| ('Activate'i)
) %setKey;
) >mark %setKey;
value = any+ %setValue;
value = base64 %setValue;
line = key /: ?/ value;
main := line+;
line = key ': ' value;
main := ( line '\n' )*;
write init;
write exec;
@ -51,11 +56,13 @@ func Kparse(data string) (m map[string]string, err os.Error) {
// No clue what I'm doing what so ever
if p == pe {
//return nil, os.ErrorString("unexpected eof")
return nil, nil
println("err unexp eof")
return m, nil
} else {
//return nil, os.ErrorString(fmt.Sprintf("error at position %d", p))
println("err ", p, "data:", string(data[p]))
return nil, nil
}
}
return
return m, nil
}

View File

@ -152,3 +152,23 @@ func TestParse(t *testing.T) {
rr, _ = Zparse("miek.nl. A 127.0.0.1")
fmt.Printf("Seen a:\n%v\n", rr)
}
func TestParseK(t *testing.T) {
m, _ := Kparse(`Private-key-format: v1.3
Algorithm: 5 (RSASHA1)
Modulus: v7yUY0LEmAtLythV6voScdW4iRAOCF2N217APNTcblHs9sxspVG8fYxrulDJhx6hqpZlCKtKPvZ649Z8/FCczL25wLKUD4W4f1xKMhw9/g+ol926keT1foQFiPGsItjinX/IHCDIEhEm1m0Cozdx4AfZai8QkPqtO064ejkCW4k=
PublicExponent: AQAB
PrivateExponent: YPwEmwjk5HuiROKU4xzHQ6l1hG8Iiha4cKRG3P5W2b66/EN/GUh07ZSf0UiYB67o257jUDVEgwCuPJz776zfApcCB4oGV+YDyEu7Hp/rL8KcSN0la0k2r9scKwxTp4BTJT23zyBFXsV/1wRDK1A5NxsHPDMYi2SoK63Enm/1ptk=
Prime1: /wjOG+fD0ybNoSRn7nQ79udGeR1b0YhUA5mNjDx/x2fxtIXzygYk0Rhx9QFfDy6LOBvz92gbNQlzCLz3DJt5hw==
Prime2: wHZsJ8OGhkp5p3mrJFZXMDc2mbYusDVTA+t+iRPdS797Tj0pjvU2HN4vTnTj8KBQp6hmnY7dLp9Y1qserySGbw==
Exponent1: N0A7FsSRIg+IAN8YPQqlawoTtG1t1OkJ+nWrurPootScApX6iMvn8fyvw3p2k51rv84efnzpWAYiC8SUaQDNxQ==
Exponent2: SvuYRaGyvo0zemE3oS+WRm2scxR8eiA8WJGeOc+obwOKCcBgeZblXzfdHGcEC1KaOcetOwNW/vwMA46lpLzJNw==
Coefficient: 8+7ZN/JgByqv0NfULiFKTjtyegUcijRuyij7yNxYbCBneDvZGxJwKNi4YYXWx743pcAj4Oi4Oh86gcmxLs+hGw==
Created: 20110302104537
Publish: 20110302104537
Activate: 20110302104537
`)
for k, v := range m {
fmt.Printf("%s = %s\n", k, v)
}
}