aboutsummaryrefslogtreecommitdiff
path: root/acse
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-10-08 20:15:17 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-10-08 20:15:17 +0200
commit044255e7d40bdbadd442ff60b66b096518610af8 (patch)
tree1b323603d5028eab41585321ba580593f0f592e4 /acse
parentcd42ef6603dc8b6703ff261e628b31ee07ef0165 (diff)
Work in progress
Diffstat (limited to 'acse')
-rw-r--r--acse/acse.go61
1 files changed, 51 insertions, 10 deletions
diff --git a/acse/acse.go b/acse/acse.go
index adbb17a..2552710 100644
--- a/acse/acse.go
+++ b/acse/acse.go
@@ -8,9 +8,13 @@ import "github.com/dim13/asn1"
// Application Constructed implicit 0
type AARQ struct {
asn1.Tag `asn1:"application,tag:0"`
- ProtocolVersion asn1.BitString `asn1:"tag:0"` // 0 implicit BitString
- ApplicationContextName asn1.ObjectIdentifier `asn1:"tag:1,explicit"` // 1
- UserInformation struct{ asn1.RawContent } `asn1:"tag:30,optional"` // 30 implicit
+ ProtocolVersion asn1.BitString `asn1:"tag:0"` // 0 implicit BitString
+ ApplicationContextName asn1.ObjectIdentifier `asn1:"tag:1,explicit"` // 1
+ UserInformation UserInformation `asn1:"tag:30,optional"` // 30 implicit
+}
+
+type UserInformation struct {
+ External `asn1:"instance"`
}
// A-ASSOCIATE Result (Result == 0)
@@ -18,16 +22,16 @@ type AARQ struct {
// Application Constructed implicit 1
type AARE struct {
asn1.Tag `asn1:"application,tag:1"`
- ProtocolVersion asn1.BitString `asn1:"tag:0"` // 0 implicit BitString
- ApplicationContextName asn1.ObjectIdentifier `asn1:"tag:1,explicit"` // 1
- Result int `asn1:"tag:2,explicit"` // 2
- ResultSourceDiagnostic AcseServiceUser `asn1:"tag:3"` // 3
- UserInformation struct{ asn1.RawContent } `asn1:"tag:30,optional"` // 30 implicit
+ ProtocolVersion asn1.BitString `asn1:"tag:0"` // 0 implicit BitString
+ ApplicationContextName asn1.ObjectIdentifier `asn1:"tag:1,explicit"` // 1
+ Result int `asn1:"tag:2,explicit"` // 2
+ ResultSourceDiagnostic AcseServiceUser `asn1:"tag:3,explicit"` // 3
+ UserInformation UserInformation `asn1:"tag:30,optional"` // 30 implicit
}
type AcseServiceUser struct {
- User int `asn1:"tag:0,optional"`
- Provider int `asn1:"tag:0,optional"`
+ asn1.Tag `asn1:"tag:1"`
+ Reason int
}
// A-RELEASE Request
@@ -48,3 +52,40 @@ type ABRT struct {
asn1.Tag `asn1:"application,tag:4"`
AbortSource int `asn1:"tag:0"` // 0 implicit
}
+
+type External struct {
+ DirectReference asn1.ObjectIdentifier `asn1:"optional"`
+ Encoding ACSEUserInformationForCSTA `asn1:"tag:0,optional"`
+}
+
+type ACSEUserInformationForCSTA struct {
+ NewDefinition `asn1:"tag:0"`
+}
+
+type NewDefinition struct {
+ CSTAVersion asn1.BitString
+}
+
+func Associate() ([]byte, error) {
+ aarq := AARQ{
+ ProtocolVersion: asn1.BitString{
+ Bytes: []byte{0x80},
+ BitLength: 1,
+ },
+ ApplicationContextName: asn1.ObjectIdentifier([]int{1, 3, 12, 0, 218}),
+ UserInformation: UserInformation{
+ External{
+ DirectReference: asn1.ObjectIdentifier([]int{1, 3, 12, 0, 285, 200}),
+ Encoding: ACSEUserInformationForCSTA{
+ NewDefinition{
+ CSTAVersion: asn1.BitString{
+ Bytes: []byte{0x08, 0x00},
+ BitLength: 16,
+ },
+ },
+ },
+ },
+ },
+ }
+ return asn1.Marshal(aarq)
+}