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