diff options
author | tb <> | 2023-09-28 12:35:31 +0000 |
---|---|---|
committer | tb <> | 2023-09-28 12:35:31 +0000 |
commit | f303397303b45a34025b87dcff0e9355c3dabcf4 (patch) | |
tree | 64707860c8b3834683bfa252318af5ad95e1a4c4 /src | |
parent | 3c50cba0fd2b2b508a0cd1bb6bb8ab101cdd914c (diff) | |
download | openbsd-f303397303b45a34025b87dcff0e9355c3dabcf4.tar.gz openbsd-f303397303b45a34025b87dcff0e9355c3dabcf4.tar.bz2 openbsd-f303397303b45a34025b87dcff0e9355c3dabcf4.zip |
Document X509v3_{addr,asid}_subset.3
First RFC 3779 page without a BUG section. It could have one, but I'm
in a lenient mood right now. Maybe it's just that this is bad but not
quite as bad as EVP.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/man/ASIdentifiers_new.3 | 15 | ||||
-rw-r--r-- | src/lib/libcrypto/man/ASRange_new.3 | 7 | ||||
-rw-r--r-- | src/lib/libcrypto/man/IPAddressRange_new.3 | 24 | ||||
-rw-r--r-- | src/lib/libcrypto/man/Makefile | 3 | ||||
-rw-r--r-- | src/lib/libcrypto/man/X509_new.3 | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/man/X509v3_addr_add_inherit.3 | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/man/X509v3_asid_add_id_or_range.3 | 6 |
7 files changed, 40 insertions, 30 deletions
diff --git a/src/lib/libcrypto/man/ASIdentifiers_new.3 b/src/lib/libcrypto/man/ASIdentifiers_new.3 index 4f6bf67f10..ae5795c9a3 100644 --- a/src/lib/libcrypto/man/ASIdentifiers_new.3 +++ b/src/lib/libcrypto/man/ASIdentifiers_new.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ASIdentifiers_new.3,v 1.7 2023/09/27 08:46:46 tb Exp $ | 1 | .\" $OpenBSD: ASIdentifiers_new.3,v 1.8 2023/09/28 12:35:31 tb Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2021 Theo Buehler <tb@openbsd.org> | 3 | .\" Copyright (c) 2021 Theo Buehler <tb@openbsd.org> |
4 | .\" | 4 | .\" |
@@ -14,7 +14,7 @@ | |||
14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16 | .\" | 16 | .\" |
17 | .Dd $Mdocdate: September 27 2023 $ | 17 | .Dd $Mdocdate: September 28 2023 $ |
18 | .Dt ASIDENTIFIERS_NEW 3 | 18 | .Dt ASIDENTIFIERS_NEW 3 |
19 | .Os | 19 | .Os |
20 | .Sh NAME | 20 | .Sh NAME |
@@ -47,7 +47,7 @@ | |||
47 | .Sh DESCRIPTION | 47 | .Sh DESCRIPTION |
48 | RFC 3779 defines two X.509v3 certificate extensions that allow the | 48 | RFC 3779 defines two X.509v3 certificate extensions that allow the |
49 | delegation of | 49 | delegation of |
50 | IP address blocks and autonomous system (AS) identifiers | 50 | IP addresses and autonomous system (AS) identifiers |
51 | from the issuer to the subject of the certificate. | 51 | from the issuer to the subject of the certificate. |
52 | An | 52 | An |
53 | .Vt ASIdentifiers | 53 | .Vt ASIdentifiers |
@@ -112,8 +112,11 @@ or a value <= 0 if an error occurs. | |||
112 | .Xr crypto 3 , | 112 | .Xr crypto 3 , |
113 | .Xr IPAddressRange_new 3 , | 113 | .Xr IPAddressRange_new 3 , |
114 | .Xr X509_new 3 , | 114 | .Xr X509_new 3 , |
115 | .Xr X509v3_asid_add_id_or_range 3 , | 115 | .Xr X509v3_addr_add_inherit 3 , |
116 | .Xr X509v3_asid_inherits 3 | 116 | .Xr X509v3_addr_get_range 3 , |
117 | .Xr X509v3_addr_inherits 3 , | ||
118 | .Xr X509v3_addr_subset 3 , | ||
119 | .Xr X509v3_asid_add_id_or_range 3 | ||
117 | .Sh STANDARDS | 120 | .Sh STANDARDS |
118 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: | 121 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: |
119 | .Bl -dash -compact | 122 | .Bl -dash -compact |
@@ -130,5 +133,5 @@ and have been available since | |||
130 | .Ox 7.1 . | 133 | .Ox 7.1 . |
131 | .Sh BUGS | 134 | .Sh BUGS |
132 | There are no corresponding functions for the RFC 3779 | 135 | There are no corresponding functions for the RFC 3779 |
133 | IP address blocks delegation extension represented by | 136 | IP address delegation extension represented by |
134 | .Vt IPAddrBlocks . | 137 | .Vt IPAddrBlocks . |
diff --git a/src/lib/libcrypto/man/ASRange_new.3 b/src/lib/libcrypto/man/ASRange_new.3 index 12eff26792..53da608cb1 100644 --- a/src/lib/libcrypto/man/ASRange_new.3 +++ b/src/lib/libcrypto/man/ASRange_new.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ASRange_new.3,v 1.5 2023/09/27 08:46:46 tb Exp $ | 1 | .\" $OpenBSD: ASRange_new.3,v 1.6 2023/09/28 12:35:31 tb Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> | 3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> |
4 | .\" | 4 | .\" |
@@ -14,7 +14,7 @@ | |||
14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16 | .\" | 16 | .\" |
17 | .Dd $Mdocdate: September 27 2023 $ | 17 | .Dd $Mdocdate: September 28 2023 $ |
18 | .Dt ASRANGE_NEW 3 | 18 | .Dt ASRANGE_NEW 3 |
19 | .Os | 19 | .Os |
20 | .Sh NAME | 20 | .Sh NAME |
@@ -90,7 +90,7 @@ autonomous system identifier delegation extension. | |||
90 | .Pp | 90 | .Pp |
91 | All | 91 | All |
92 | .Vt ASN1_INTEGER Ns s | 92 | .Vt ASN1_INTEGER Ns s |
93 | in this manual should be representable as unsigned 32-bit integers. | 93 | in this manual must be representable as unsigned 32-bit integers. |
94 | The API performs no corresponding checks. | 94 | The API performs no corresponding checks. |
95 | The library provides no convenient way of setting the value of an | 95 | The library provides no convenient way of setting the value of an |
96 | .Vt ASN1_INTEGER | 96 | .Vt ASN1_INTEGER |
@@ -358,6 +358,7 @@ or a value <= 0 if an error occurs. | |||
358 | .Xr crypto 3 , | 358 | .Xr crypto 3 , |
359 | .Xr IPAddressRange_new 3 , | 359 | .Xr IPAddressRange_new 3 , |
360 | .Xr s2i_ASN1_INTEGER 3 , | 360 | .Xr s2i_ASN1_INTEGER 3 , |
361 | .Xr STACK_OF 3 , | ||
361 | .Xr X509_new 3 , | 362 | .Xr X509_new 3 , |
362 | .Xr X509v3_asid_add_id_or_range 3 | 363 | .Xr X509v3_asid_add_id_or_range 3 |
363 | .Sh STANDARDS | 364 | .Sh STANDARDS |
diff --git a/src/lib/libcrypto/man/IPAddressRange_new.3 b/src/lib/libcrypto/man/IPAddressRange_new.3 index 07c57f3e5d..e15ff34509 100644 --- a/src/lib/libcrypto/man/IPAddressRange_new.3 +++ b/src/lib/libcrypto/man/IPAddressRange_new.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: IPAddressRange_new.3,v 1.4 2023/09/27 08:46:46 tb Exp $ | 1 | .\" $OpenBSD: IPAddressRange_new.3,v 1.5 2023/09/28 12:35:31 tb Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> | 3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> |
4 | .\" | 4 | .\" |
@@ -14,7 +14,7 @@ | |||
14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16 | .\" | 16 | .\" |
17 | .Dd $Mdocdate: September 27 2023 $ | 17 | .Dd $Mdocdate: September 28 2023 $ |
18 | .Dt IPADDRESSRANGE_NEW 3 | 18 | .Dt IPADDRESSRANGE_NEW 3 |
19 | .Os | 19 | .Os |
20 | .Sh NAME | 20 | .Sh NAME |
@@ -110,12 +110,12 @@ type representing the IP address delegation extension. | |||
110 | Per RFC 3779, section 2.1.1, | 110 | Per RFC 3779, section 2.1.1, |
111 | an IPv4 or an IPv6 address is encoded in network byte order in an | 111 | an IPv4 or an IPv6 address is encoded in network byte order in an |
112 | ASN.1 BIT STRING of bit size 32 or 128 bits, respectively. | 112 | ASN.1 BIT STRING of bit size 32 or 128 bits, respectively. |
113 | The bit size of a prefix is its prefix length. | 113 | The bit size of a prefix is its prefix length; |
114 | In other words, all insignificant zero bits are omitted | 114 | all insignificant zero bits are omitted |
115 | from the encoding. | 115 | from the encoding. |
116 | An address range is expressed as a pair of BIT STRINGs | 116 | An address range is expressed as a pair of BIT STRINGs |
117 | where all least significant zero bits of the lower bound | 117 | where all the least significant zero bits of the lower bound |
118 | and the all least significant one bits of the upper bound are omitted. | 118 | and all the least significant one bits of the upper bound are omitted. |
119 | .Pp | 119 | .Pp |
120 | The library provides no API for directly converting an IP address or | 120 | The library provides no API for directly converting an IP address or |
121 | prefix (in any form) to and from an | 121 | prefix (in any form) to and from an |
@@ -127,8 +127,11 @@ internals are subtle and directly manipulating them in the | |||
127 | context of the RFC 3779 API is discouraged. | 127 | context of the RFC 3779 API is discouraged. |
128 | The bit size of an | 128 | The bit size of an |
129 | .Vt ASN1_BIT_STRING | 129 | .Vt ASN1_BIT_STRING |
130 | representing an IP address prefix or range is eight times its length | 130 | representing an IP address prefix or range is eight times its |
131 | member minus the lowest three bits of its flags, provided the | 131 | .Fa length |
132 | member minus the lowest three bits of its | ||
133 | .Fa flags , | ||
134 | provided the | ||
132 | .Dv ASN1_STRING_FLAG_BITS_LEFT | 135 | .Dv ASN1_STRING_FLAG_BITS_LEFT |
133 | flag is set. | 136 | flag is set. |
134 | .Pp | 137 | .Pp |
@@ -460,7 +463,8 @@ or a value <= 0 if an error occurs. | |||
460 | .Xr crypto 3 , | 463 | .Xr crypto 3 , |
461 | .Xr X509_new 3 , | 464 | .Xr X509_new 3 , |
462 | .Xr X509v3_addr_add_inherit 3 , | 465 | .Xr X509v3_addr_add_inherit 3 , |
463 | .Xr X509v3_addr_inherits 3 | 466 | .Xr X509v3_addr_inherits 3 , |
467 | .Xr X509v3_addr_subset 3 | ||
464 | .Sh STANDARDS | 468 | .Sh STANDARDS |
465 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: | 469 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: |
466 | .Bl -dash -compact | 470 | .Bl -dash -compact |
@@ -483,7 +487,7 @@ section 2.2.3.7: Type IPAddressOrRange | |||
483 | .It | 487 | .It |
484 | section 2.2.3.8: Element addressPrefix and Type IPAddress | 488 | section 2.2.3.8: Element addressPrefix and Type IPAddress |
485 | .It | 489 | .It |
486 | section 2.2.3.9: Elements addressRange and Type IPAddressRange | 490 | section 2.2.3.9: Element addressRange and Type IPAddressRange |
487 | .El | 491 | .El |
488 | .Pp | 492 | .Pp |
489 | ITU-T Recommendation X.690, also known as ISO/IEC 8825-1: | 493 | ITU-T Recommendation X.690, also known as ISO/IEC 8825-1: |
diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile index 9bf40343e4..e6a97f3004 100644 --- a/src/lib/libcrypto/man/Makefile +++ b/src/lib/libcrypto/man/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.274 2023/09/26 20:42:45 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.275 2023/09/28 12:35:31 tb Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> | 3 | .include <bsd.own.mk> |
4 | 4 | ||
@@ -395,6 +395,7 @@ MAN= \ | |||
395 | X509v3_addr_add_inherit.3 \ | 395 | X509v3_addr_add_inherit.3 \ |
396 | X509v3_addr_get_range.3 \ | 396 | X509v3_addr_get_range.3 \ |
397 | X509v3_addr_inherits.3 \ | 397 | X509v3_addr_inherits.3 \ |
398 | X509v3_addr_subset.3 \ | ||
398 | X509v3_asid_add_id_or_range.3 \ | 399 | X509v3_asid_add_id_or_range.3 \ |
399 | X509v3_asid_add_id_or_range.3 \ | 400 | X509v3_asid_add_id_or_range.3 \ |
400 | X509v3_get_ext_by_NID.3 \ | 401 | X509v3_get_ext_by_NID.3 \ |
diff --git a/src/lib/libcrypto/man/X509_new.3 b/src/lib/libcrypto/man/X509_new.3 index dea1b256ce..a669bf0608 100644 --- a/src/lib/libcrypto/man/X509_new.3 +++ b/src/lib/libcrypto/man/X509_new.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: X509_new.3,v 1.41 2023/09/26 20:42:45 tb Exp $ | 1 | .\" $OpenBSD: X509_new.3,v 1.42 2023/09/28 12:35:31 tb Exp $ |
2 | .\" full merge up to: OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 | 2 | .\" full merge up to: OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 |
3 | .\" | 3 | .\" |
4 | .\" This file is a derived work. | 4 | .\" This file is a derived work. |
@@ -66,7 +66,7 @@ | |||
66 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 66 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
67 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. | 67 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. |
68 | .\" | 68 | .\" |
69 | .Dd $Mdocdate: September 26 2023 $ | 69 | .Dd $Mdocdate: September 28 2023 $ |
70 | .Dt X509_NEW 3 | 70 | .Dt X509_NEW 3 |
71 | .Os | 71 | .Os |
72 | .Sh NAME | 72 | .Sh NAME |
@@ -245,6 +245,7 @@ if an error occurs. | |||
245 | .Xr X509v3_addr_add_inherit 3 , | 245 | .Xr X509v3_addr_add_inherit 3 , |
246 | .Xr X509v3_addr_get_range 3 , | 246 | .Xr X509v3_addr_get_range 3 , |
247 | .Xr X509v3_addr_inherits 3 , | 247 | .Xr X509v3_addr_inherits 3 , |
248 | .Xr X509v3_addr_subset 3 , | ||
248 | .Xr X509v3_asid_add_id_or_range 3 | 249 | .Xr X509v3_asid_add_id_or_range 3 |
249 | .Sh STANDARDS | 250 | .Sh STANDARDS |
250 | RFC 5280: Internet X.509 Public Key Infrastructure Certificate and | 251 | RFC 5280: Internet X.509 Public Key Infrastructure Certificate and |
diff --git a/src/lib/libcrypto/man/X509v3_addr_add_inherit.3 b/src/lib/libcrypto/man/X509v3_addr_add_inherit.3 index 3ca9bc59ae..81e73f76e5 100644 --- a/src/lib/libcrypto/man/X509v3_addr_add_inherit.3 +++ b/src/lib/libcrypto/man/X509v3_addr_add_inherit.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: X509v3_addr_add_inherit.3,v 1.5 2023/09/27 08:46:46 tb Exp $ | 1 | .\" $OpenBSD: X509v3_addr_add_inherit.3,v 1.6 2023/09/28 12:35:31 tb Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> | 3 | .\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org> |
4 | .\" | 4 | .\" |
@@ -14,7 +14,7 @@ | |||
14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16 | .\" | 16 | .\" |
17 | .Dd $Mdocdate: September 27 2023 $ | 17 | .Dd $Mdocdate: September 28 2023 $ |
18 | .Dt X509V3_ADDR_ADD_INHERIT 3 | 18 | .Dt X509V3_ADDR_ADD_INHERIT 3 |
19 | .Os | 19 | .Os |
20 | .Sh NAME | 20 | .Sh NAME |
@@ -60,7 +60,7 @@ | |||
60 | An | 60 | An |
61 | .Vt IPAddrBlocks | 61 | .Vt IPAddrBlocks |
62 | object represents the content of | 62 | object represents the content of |
63 | an X509v3 IP address blocks delegation extension | 63 | an IP address delegation extension |
64 | as defined in RFC 3779, section 2.2.3.1. | 64 | as defined in RFC 3779, section 2.2.3.1. |
65 | It holds lists of IP address prefixes and IP address ranges | 65 | It holds lists of IP address prefixes and IP address ranges |
66 | delegated from the issuer to the subject of the certificate. | 66 | delegated from the issuer to the subject of the certificate. |
@@ -399,8 +399,8 @@ is desired. | |||
399 | .Xr inet_ntop 3 , | 399 | .Xr inet_ntop 3 , |
400 | .Xr IPAddressRange_new 3 , | 400 | .Xr IPAddressRange_new 3 , |
401 | .Xr X509_new 3 , | 401 | .Xr X509_new 3 , |
402 | .Xr X509v3_asid_add_id_or_range 3 , | 402 | .Xr X509v3_addr_get_range 3 , |
403 | .Xr X509v3_addr_get_range 3 | 403 | .Xr X509v3_asid_add_id_or_range 3 |
404 | .Sh STANDARDS | 404 | .Sh STANDARDS |
405 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: | 405 | RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers: |
406 | .Bl -dash -compact | 406 | .Bl -dash -compact |
diff --git a/src/lib/libcrypto/man/X509v3_asid_add_id_or_range.3 b/src/lib/libcrypto/man/X509v3_asid_add_id_or_range.3 index c9ff6bf13b..1b42a449e1 100644 --- a/src/lib/libcrypto/man/X509v3_asid_add_id_or_range.3 +++ b/src/lib/libcrypto/man/X509v3_asid_add_id_or_range.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: X509v3_asid_add_id_or_range.3,v 1.5 2023/09/27 08:46:46 tb Exp $ | 1 | .\" $OpenBSD: X509v3_asid_add_id_or_range.3,v 1.6 2023/09/28 12:35:31 tb Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2021-2023 Theo Buehler <tb@openbsd.org> | 3 | .\" Copyright (c) 2021-2023 Theo Buehler <tb@openbsd.org> |
4 | .\" | 4 | .\" |
@@ -14,7 +14,7 @@ | |||
14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 14 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 15 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16 | .\" | 16 | .\" |
17 | .Dd $Mdocdate: September 27 2023 $ | 17 | .Dd $Mdocdate: September 28 2023 $ |
18 | .Dt X509V3_ASID_ADD_ID_OR_RANGE 3 | 18 | .Dt X509V3_ASID_ADD_ID_OR_RANGE 3 |
19 | .Os | 19 | .Os |
20 | .Sh NAME | 20 | .Sh NAME |
@@ -48,7 +48,7 @@ | |||
48 | .Sh DESCRIPTION | 48 | .Sh DESCRIPTION |
49 | An | 49 | An |
50 | .Vt ASIdentifiers | 50 | .Vt ASIdentifiers |
51 | object represents the content of the X509v3 certificate extension | 51 | object represents the content of the certificate extension |
52 | defined in RFC 3779, section 3.2.3.1. | 52 | defined in RFC 3779, section 3.2.3.1. |
53 | It can be instantiated with | 53 | It can be instantiated with |
54 | .Xr ASIdentifiers_new 3 | 54 | .Xr ASIdentifiers_new 3 |