Skip to content

Full catnip support #48

@axeldahlberg

Description

@axeldahlberg

I have forked the repo and trying to implement full catnip support.

catnip claim should support:

  • ASN
  • IPv4 address
  • IPv6 address
  • IPv4 prefix
  • IPv6 prefix

Use ipaddr.js to handle IP address verification.
https://www.npmjs.com/package/ipaddr.js

use claim label 311

catnip should be array as input
[1234,"192.168.0.1","192.168.0.0/24",'2001:DB8::B','2001:DB8::A/48']

with cbor result

311: [
    1234
	52(h'c0a80001'), 
	52([24, h'c0a80000']),
	54(h'20010db800000000000000000000000b'),
	54([48,h'20010db800000000000000000000000a'])
],

CDDL from CTA-5007-A Final:

; Common Access Token Network IP claim
$$Claims-Set-Claims //= (catnip-label => catnip-value)
catnip-label = 311
catnip-value = [ + catnip-object ]
; Autonomous System Number (ASN), IPv6 address or IPv4 address
catnip-object = uint / ipv6-address-or-prefix / ipv4-address-or-
prefix
; IP addresses as defined in in [RFC9194] section 5
; excluding the ipv6-address-with-prefix option
ipv6-address-xor-prefix = #6.54(ipv6-address / ipv6-prefix)
ipv4-address-xor-prefix = #6.52(ipv4-address / ipv4-prefix)
ipv6-address = bytes .size 16
ipv4-address = bytes .size 4
ipv6-prefix-length = 0..128
ipv4-prefix-length = 0..32
ipv6-prefix-bytes = bytes .size (uint .le 16)
ipv4-prefix-bytes = bytes .size (uint .le 4)
ipv6-prefix = [ipv6-prefix-length, ipv6-prefix-bytes]
ipv4-prefix = [ipv4-prefix-length, ipv4-prefix-bytes]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions