58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(function (exports) {
 | 
						|
'use strict';
 | 
						|
 | 
						|
// RFC 6844 https://tools.ietf.org/html/rfc6844#section-3
 | 
						|
// https://support.dnsimple.com/articles/caa-record/
 | 
						|
 | 
						|
// A Certification Authority Authorization (CAA) record is used to specify which
 | 
						|
// certificate authorities (CAs) are allowed to issue certificates for a domain.
 | 
						|
 | 
						|
// Value    Meaning/Use
 | 
						|
//
 | 
						|
// Flag     An unsigned integer between 0-255.
 | 
						|
//          It is currently used to represent the critical flag, that has a
 | 
						|
//          specific meaning per RFC 6844
 | 
						|
// Tag      An ASCII string that represents the identifier of the property
 | 
						|
//          represented by the record.
 | 
						|
// Value    The value associated with the tag.
 | 
						|
 | 
						|
// The RFC currently defines 3 available tags:
 | 
						|
//
 | 
						|
// - issue:     explicity authorizes a single certificate authority to issue a
 | 
						|
//              certificate (any type) for the hostname.
 | 
						|
// - issuewild: explicity authorizes a single certificate authority to issue a
 | 
						|
//              wildcard certificate (and only wildcard) for the hostname.
 | 
						|
// - iodef:     specifies an URL to which a certificate authority may report
 | 
						|
//              policy violations.
 | 
						|
 | 
						|
exports.DNS_PARSER_TYPE_CAA = function (ab, packet, record) {
 | 
						|
 | 
						|
  var data = new Uint8Array(ab);
 | 
						|
  var i = record.rdstart;
 | 
						|
  var flag = data[i];
 | 
						|
  var mid = data[i + 1];
 | 
						|
  i += 2;
 | 
						|
  mid += i;
 | 
						|
  var end = record.rdstart + record.rdlength;
 | 
						|
  var tag = '';
 | 
						|
  var value = '';
 | 
						|
 | 
						|
  while (i < mid) {
 | 
						|
    tag += String.fromCharCode(data[i]);
 | 
						|
    i += 1;
 | 
						|
  }
 | 
						|
 | 
						|
  while (i < end) {
 | 
						|
    value += String.fromCharCode(data[i]);
 | 
						|
    i += 1;
 | 
						|
  }
 | 
						|
 | 
						|
  record.flag = flag;
 | 
						|
  record.tag = tag;
 | 
						|
  record.value = value;
 | 
						|
 | 
						|
  return record;
 | 
						|
};
 | 
						|
 | 
						|
}('undefined' !== typeof window ? window : exports));
 |