Skip to content

Commit

Permalink
Documentation for internal PUNYCODE-related functions
Browse files Browse the repository at this point in the history
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from openssl#9654)
  • Loading branch information
beldmit authored and Sam Wenker committed Sep 1, 2020
1 parent 2dc98ed commit 9956e55
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions doc/internal/man3/ossl_punycode_decode.pod
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
=pod

=head1 NAME

ossl_punycode_decode, ossl_a2ulabel, ossl_a2ucompare
- internal punycode-related functions

=head1 SYNOPSIS

#include "crypto/punycode.h"

int ossl_punycode_decode(const char *pEncoded, const size_t enc_len,
unsigned int *pDecoded, unsigned int *pout_length);

int ossl_a2ulabel(const char *in, char *out, size_t *outlen);

int ossl_a2ucompare(const char *a, const char *u);

=head1 DESCRIPTION

PUNYCODE encoding introduced in RFCs 3490-3492 is widely used for
representation of host names in ASCII-only format. Some specifications,
such as RFC 8398, require comparison of host names encoded in UTF-8 charset.

ossl_a2ulabel() decodes NULL-terminated hostname from PUNYCODE to UTF-8,
using a provided buffer for output.

ossl_a2ucompare() accepts two NULL-terminated hostnames, decodes the 1st
from PUNYCODE to UTF-8 and compares it with the 2nd one as is.

ossl_punycode_decode() decodes one label (one dot-separated part) from
a hostname, with stripped PUNYCODE marker I<xn-->.

=head1 RETURN VALUES

ossl_a2ulabel() returns 1 on success, 0 on not enough buf passed,
-1 on invalid PUNYCODE string passed. When valid string is provided, it sets the
I<*outlen> to the length of required buffer to perform correct decoding.

ossl_a2ucompare() returns 1 on non-equal strings, 0 on equal strings,
-1 when invalid PUNYCODE string passed.

ossl_punycode_decode() returns 1 on success, 0 on error. On success,
*pout_length contains the number of codepoints decoded.

=head1 HISTORY

The functions described here were all added in OpenSSL 3.0.

=head1 COPYRIGHT

Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use
this file except in compliance with the License. You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut

0 comments on commit 9956e55

Please sign in to comment.