Skip to content
Snippets Groups Projects
Select Git revision
  • nettle_3.1.1_release_20150424
  • master default protected
  • streebog
  • gost28147
  • master-updates
  • ed448
  • shake256
  • curve448
  • ecc-sqrt
  • gosthash94cp
  • cmac64
  • block16-refactor
  • siv-mode
  • cmac-layout
  • delete-des-compat
  • delete-rsa_blind
  • aes-struct-layout
  • release-3.4-fixes
  • struct-layout
  • attribute-deprecated
  • rename-data-symbols
  • nettle_3.5.1_release_20190627
  • nettle_3.5_release_20190626
  • nettle_3.5rc1
  • nettle_3.4.1_release_20181204
  • nettle_3.4.1rc1
  • nettle_3.4_release_20171119
  • nettle_3.4rc2
  • nettle_3.4rc1
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
  • nettle_2.7.1_release_20130528
  • nettle_2.7_release_20130424
  • nettle_2.6_release_20130116
  • nettle_2.5_release_20120707
40 results

chacha-core-internal.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    rr.scm 1.74 KiB
    (define-module (dns types rr)
      :use-module (srfi srfi-88)
      :use-module (dns internal util)
      :use-module (dns internal object)
      :use-module (dns internal state-monad)
      :use-module (dns internal bv)
      :use-module (dns util)
      :use-module (dns label)
      :use-module (dns enum)
      :use-module (dns types)
      :use-module (dns types rr-data)
      :use-module ((rnrs bytevectors) :select (bytevector? bytevector-length))
      :re-export (name type class ttl rdata)
      :export (make-dns-rr-data
               dns-rr-data?
               bytes->rr-data
               rr-data->bytes))
    
    (define-record-type dns-rr-data
      (fields (name type: string?)
              (type type: (or u16? (assq (@ (dns enum) rr-types))))
              (class
                default: 'IN
                type: (or u16? (assq (@ (dns enum) class-types))))
              (ttl type: (uint? 32))
              ;; Rdata's type is dependant on the type field, and is therefore left blank.
              rdata))
    
    
    (define (bytes->rr-data bv)
      (do
        name     <- (<$> domain-join (labels->string-list bv))
        type     <- (<$> int->rr (u16 bv))
        class    <- (<$> int->class (u16 bv))
        ttl      <- (u32 bv)
        rdlength <- (u16 bv)
        rdata    <- ((get-deserializer type) bv rdlength)
        (return (make-dns-rr-data name: name type: type class: class
                                  ttl: ttl rdata: rdata))))
    
    
    (define (rr-data->bytes rr)
      (do
          (bv-copy! (string-list->labels (string-split (name rr) #\.))) ; name
          (u16! (rr->int (type rr)))        ; type
        (u16! (class->int (class rr)))      ; class
        (u32! (ttl rr))                     ; ttl
        ;; rdlength and rdata
        (if (bytevector? (rdata rr))
            (do (u16! (bytevector-length (rdata rr)))
                (bv-copy! (rdata rr)))
            ((get-serializer (type rr)) (rdata rr)))))