anchor.diff:  
   (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-utf8string+)))
     (let* ((data (asn1-string-data asn1-string))
  -         (length (asn1-string-length asn1-string))
  -         (strlen (strlen data)))
  -    (if (= strlen length)
  -        (cffi:foreign-string-to-lisp data)
  -        (error 'invalid-asn1-string :type '+v-asn1-utf8string+))))
  +         (length (asn1-string-length asn1-string)))
  +    (cffi:foreign-string-to-lisp data :count length :encoding :utf-8)))
   
   (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-universalstring+)))
     (if (= 0 (mod (asn1-string-length asn1-string) 4))
  
positive.code:     :int
    (asn1-string :pointer))
  
  (cffi:defcfun ("strlen" strlen)
      :int
    (string :string))
  
  (cffi:defcfun (memcpy "memcpy") :pointer
    (dest :pointer)
    (src  :pointer)
    (count :int))
  
  (cffi:defcstruct asn1_string_st
    (length :int)
    (type :int)
    (data :pointer)
    (flags :long))
  
  
  #|
  ASN1 string validation references:
  
negative.code:   (every #'asn1-teletex-char-p bytes))
  
  (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-teletexstring+)))
    (let ((bytes (asn1-string-bytes-vector asn1-string)))
      (if (asn1-teletex-string-p bytes)
          (babel:octets-to-string bytes :encoding :ascii)
          (error 'invalid-asn1-string :type '+v-asn1-teletexstring+))))
  
  (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-bmpstring+)))
  