added extensionHeader, added crypto base functions

This commit is contained in:
2025-01-21 20:49:29 +01:00
parent bc2c216440
commit f814e3a1f9
2 changed files with 167 additions and 29 deletions

View File

@@ -19,12 +19,25 @@ const (
ExtensionHeaderType_Destination uint8 = 2 /* https://git.send.nrw/sendnrw/sendnrwlib/issues/1 */
ExtensionHeaderType_PayloadDefinition uint8 = 3
ExtensionHeaderType_Protocol uint8 = 4
ExtensionHeaderType_Control uint8 = 5 /*Steuerbefehle wie Download, Upload, ...*/
ExtensionHeaderType_Control uint8 = 5 /*Syn/SynAck/Ack/AckFin/Fin*/
ExtensionHeaderType_Crypto uint8 = 6 /*Hinweis auf eine Verschlüsselung*/
ExtensionHeaderType_Validation uint8 = 7 /*Hinweis auf eine Validierung oder Checksum*/
ExtensionHeaderType_Routing uint8 = 8 /*Hinweis auf eine Routing-Information*/
)
const (
ControlFlag_Flow_SYN string = "SYN"
ControlFlag_Flow_SYNACK string = "SYNACK"
ControlFlag_Flow_ACK string = "ACK"
ControlFlag_Flow_ACKFIN string = "ACKFIN"
ControlFlag_Flow_FIN string = "FIN"
ControlFlag_Encryption_INSECURE string = "INSECURE"
ControlFlag_Encryption_STAYINSECURE string = "STAYINSECURE"
ControlFlag_Encryption_SECURESTART string = "SECURESTART"
ControlFlag_Encryption_SECUREACCEPT string = "SECUREACCEPT"
ControlFlag_Encryption_SECUREFAIL string = "SECUREFAIL"
)
func GenerateEHT1(IPv4, IPv6, Port string) ExtensionHeader {
return ExtensionHeader{
Type: ExtensionHeaderType_Source,
@@ -57,6 +70,22 @@ func GenerateEHT4(ProtocolName, ProtocolVersion, ProtocolOID string) ExtensionHe
}
}
func GenerateEHT5(ControlFlagFlow, ControlFlagEncryption string) ExtensionHeader {
return ExtensionHeader{
Type: ExtensionHeaderType_Control,
Meta: map[string]string{"version": "1.0"},
Data: map[string]string{"controlflagflow": ControlFlagFlow, "controlflagencryption": ControlFlagEncryption},
}
}
func GenerateEHT6(PublicKey string) ExtensionHeader {
return ExtensionHeader{
Type: ExtensionHeaderType_Crypto,
Meta: map[string]string{"version": "1.0"},
Data: map[string]string{"publickey": PublicKey},
}
}
func GenerateEHT7(Checksum string) ExtensionHeader {
return ExtensionHeader{
Type: ExtensionHeaderType_Validation,
@@ -65,18 +94,26 @@ func GenerateEHT7(Checksum string) ExtensionHeader {
}
}
func GenerateMH(Version uint8, Flag string) MainHeader {
func GenerateMainHeader(Version uint8, Flag string, ExH ...ExtensionHeader) MainHeader {
return MainHeader{
Version: Version,
Meta: map[string]string{"version": "1.0", "flag": Flag},
Version: Version,
Meta: map[string]string{"version": "1.0", "flag": Flag},
ExtensionHeaders: ExH,
}
}
func EncodeB64(input string) (string, error) {
func GenerateNetworkProtocol(mainheader MainHeader, payload string) NetworkProtocol {
return NetworkProtocol{
Header: mainheader,
Payload: payload,
}
}
func EncodeBase64(input string) (string, error) {
return base64.StdEncoding.EncodeToString([]byte(input)), nil
}
func DecodeB64(input string) (string, error) {
func DecodeBase64(input string) (string, error) {
d, err := base64.StdEncoding.DecodeString(input)
if err != nil {
return "", err