NAME

Protocol::HAP::SetupCode - the rules of the HomeKit setup code

SYNOPSIS

use Protocol::HAP::SetupCode qw(normalize_setup_code validate_setup_code);

# Normalize a setup code (remove dashes and spaces)
my $normalized = normalize_setup_code('9876-5432');  # Returns '98765432'
my $normalized = normalize_setup_code('9876 5432');  # Returns '98765432'
my $normalized = normalize_setup_code('98765432');   # Returns '98765432'

# Validate a setup code
if (validate_setup_code('9876-5432')) {
    print "Valid setup code\n";
}

if (!validate_setup_code('1234-5678')) {
    print "Invalid setup code (sequential pattern)\n";
}

DESCRIPTION

This module handles HAP setup codes: the 8-digit numeric codes that pairing uses. The specification calls them setup codes [HAP-Pairing §2], so no name here uses the word it replaced.

The HAP specification says that dashes and spaces are format characters only. The module removes them before use. Thus 9876-5432 and 98765432 are the same setup code.

FUNCTIONS

normalize_setup_code($code)

This function removes the dashes and the spaces from a setup code. It returns the 8-digit numeric string.

my $normalized = normalize_setup_code('9876-5432');
# Returns: '98765432'

The function returns undef if the input format is not valid. A valid input has exactly 8 digits after normalization.

validate_setup_code($code)

This function does a check of a setup code against these HAP requirements:

  • The code must have exactly 8 digits after the removal of the dashes and the spaces.

  • The code must not be a trivial or sequential pattern.

The function returns 1 if the setup code is valid. It returns undef if the setup code is not valid.

if (validate_setup_code('9876-5432')) {
    # the setup code is valid
}

INVALID SETUP CODES

The HAP specification rejects these setup codes:

00000000  11111111  22222222  33333333  44444444
55555555  66666666  77777777  88888888  99999999
12345678  87654321

SEE ALSO

Protocol::HAP::SRP, Protocol::HAP::Pairing, openhapd.conf(5), spec/HAP-Pairing.md

STANDARDS

HomeKit Accessory Protocol Specification (Non-Commercial Version) Release R2, Section 5.6: Setup Code

1 POD Error

The following errors were encountered while parsing the POD:

Around line 27:

Non-ASCII character seen before =encoding in '§2],'. Assuming UTF-8