oid.Rd
Object Identifiers (OIDs) are entities defined by international standards (ITU-T, ISO, IEC) used to identify objects. In the PKI context they are used for example to identify encyrption algorithms. Each root (first integer - see below) denotes the standards body governing the allocations.
OIDs consist of a hierarchy of integers with each component having a
meaning in the hierarchy. For example, the OID of the DER encoding is
defined in the ITU-T X.680 standard as
joint-iso-itu-t(2) asn1(1) ber-derived(2) distinguished-encoding(1)
where the text before each integer describes its meaning in that
context and the integer is the encoding of that meaning. So the OID
itself would be in character form "2.1.2.1"
(also called the dot
notation introduced by IETF) and in R integer form
c(2, 1, 2, 1)
. Internally, OIDs are represented in their ASN.1
encoding as raw vectors which is the way they are typically used
in files or communication payload.
The following functions are used to operate on OIDs.
oid
creates an OID.
Coercion methods as.integer
and as.character
convert the
OID into its numeric and textural form respectively. as.oid
is
a generic for convering objects into OIDs and is implemented for at
least the above cases.
is.oid
returns TRUE
if the object is an OID.
oid(x)
as.oid(x, ...)
# S3 method for default
as.oid(x, ...)
is.oid(x)
# S3 method for oid
Ops(e1, e2)
# S3 method for oid
print(x, ...)
# S3 method for oid
as.character(x, ...)
# S3 method for oid
as.integer(x, ...)
object to covert/create/check
left-hand side argument for binary operators
right-hand side arguemnt for binary operators
further arguments (currently unused)
The only allowed oparators on OIDs are ==
and !=
which
return TRUE
or FALSE
.
The oid(x)
constructor (and also the as.oid
default
method) support following types: scalar string (expected to be in
dot-notation), integer vector, numeric vector (it is coerced to integer
vector implicitly), raw vector (must be ASN.1 encoding of the OID).
The S3 class of OID objects is "oid"
. It consists of a raw
vector repesenting the ASN.1 encoded OID (without the type
specifier). An additional attribute "type"
is set to 6L
for compatiblity with ASN1.encode
.
## RSA algorithm OID:
## iso(1) member-body(2) us(840) rsadsi(113549)
## pkcs(1) pkcs-1(1) rsaEncryption(1)
o <- oid("1.2.840.113549.1.1.1")
as.raw(o)
#> [1] 2a 86 48 86 f7 0d 01 01 01
as.integer(o)
#> [1] 1 2 840 113549 1 1 1
as.character(o)
#> [1] "1.2.840.113549.1.1.1"
as.oid(as.integer(o)) == o
#> [1] TRUE
is.oid(o)
#> [1] TRUE
(a <- ASN1.encode(o))
#> [1] 06 09 2a 86 48 86 f7 0d 01 01 01
as.oid(ASN1.decode(a)) == o
#> [1] TRUE