Skip to content
Snippets Groups Projects
Select Git revision
  • ecc-support
  • master default
  • chacha-poly1305-test
  • rsa-crt-hardening
  • chacha96
  • fat-library
  • versioned-symbols
  • curve25519
  • dsa-reorg
  • aead-api
  • set_key-changes
  • poly1305
  • aes-reorg
  • nettle-2.7-fixes
  • size_t-changes
  • experimental-20050201
  • lsh-1.4.2
  • nettle_3.1.1_release_20150424
  • 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
  • converted-master-branch-to-git
  • nettle_2.4_release_20110903
  • nettle_2.3_release_20110902
  • nettle_2.2_release_20110711
  • nettle_2.1_release_20100725
  • camellia_32bit_20100720
  • nettle_2.0_release_20090608
  • nettle_1.15_release_20061128
  • after_experimental_merge_20060516
  • head_before_experimental_merge_20060516
37 results

aesdata.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)))))