anchor.diff:    (every #'asn1-teletex-char-p bytes))
   
   (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-teletexstring+)))
  -  (let* ((data (asn1-string-data asn1-string))
  -         (length (asn1-string-length asn1-string))
  -         (strlen (strlen data)))
  -    (if (= strlen length)
  -        (let ((bytes (asn1-string-bytes-vector asn1-string)))
  -          (if (asn1-teletex-string-p bytes)
  -              (cffi:foreign-string-to-lisp data :encoding :ascii)
  -              (error 'invalid-asn1-string :type '+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+)))
  
positive.code:   (every #'asn1-iastring-char-p bytes))
  
  (defmethod decode-asn1-string (asn1-string (type (eql #.+v-asn1-iastring+)))
    (let* ((data (asn1-string-data asn1-string))
           (length (asn1-string-length asn1-string))
           (strlen (strlen data)))
      (if (= strlen length)
          (let ((bytes (asn1-string-bytes-vector asn1-string)))
            (if (asn1-iastring-p bytes)
                (cffi:foreign-string-to-lisp data :encoding :ascii)
                (error 'invalid-asn1-string :type '+v-asn1-iastring+)))
          (error 'invalid-asn1-string :type '+v-asn1-iastring+))))
  
  (defun asn1-printable-char-p (byte)
  
negative.code: (defgeneric decode-asn1-string (asn1-string type))
  
  (defun copy-bytes-to-lisp-vector (src-ptr vector count)
    (declare (type (simple-array (unsigned-byte 8)) vector)
             (type fixnum count)
             (optimize (safety 0) (debug 0) (speed 3)))
    (dotimes (i count vector)
      (setf (aref vector i) (cffi:mem-aref src-ptr :unsigned-char i))))
  
  (defun asn1-string-bytes-vector (asn1-string)
    (let* ((data (asn1-string-data asn1-string))
  