priv key parsing works also
This commit is contained in:
parent
385899c246
commit
77df52c2f2
29
kparse.rl
29
kparse.rl
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue