►
Description
Round three of walking through the proposed API set:
https://github.com/dotnet/corefx/issues/21281
A
C
Sure
you're
gone
yeah,
I
think
so.
Okay
cool
so
today,
IP
address
has
a
constructor
that
accepts
a
byte
array.
It
also
has
an
internal
one
that
takes
a
pointer
and
I'm
suggesting
we
just
add
one
that
takes
fans,
so
you
can
construct
these.
In
particular,
it's
useful
for
constructing
when
you
already
have
the
address
in
some
sort
of
you
know
pointer
at
which
we
actually
hit
a
few
times
internally
as
well.
So
this
will
help
us
and
it's
got
to
there's
already
two
overloads
today.
E
C
B
F
F
For
me,
I
was
going
to
push
back
on
the
Constructors
until
you
mentioned
that
we
early
have
uses
of
them,
because
this
seems
like
we
might
be
going
a
little
gung-ho
on
this,
adding
more
than
one
each
but
IP
address
that
don't
seem
like
they're
that
large
and
scope,
but
what?
If
you're
already
using
them
in
the
context
where
you
have
a
buffer
of
a
span,
I
can
understand
yeah
well,.
C
It
also
comes
into
play.
You
end
up
actually
creating
a
whole
bunch
of
IP
addresses
at
once
in
a
particular
case,
which
is
anytime,
you
do
a
DNS
lookup,
our
DNS
API
is
give
you
back
collections
of
IP
addresses,
and
so
every
IP
address
packets
that
gets
constructed.
We
end
up
allocating
a
byte
array,
just
from
the
native
pointer
that
we
got
back
purely
to
create
the
IP
address.
Okay,.
F
F
C
That's
where
you
want
to
format
the
IP
adjust
it's,
basically
our
what
we've
been
using
as
our
to
string
equivalent,
but
without
allocating
a
string.
It's
you
want
to
get
this,
the
formatted
version
of
it,
but
I'm.
Sorry,
no
I'm
wrong.
That's
time
to
give
something
else
right,
so
IP
address
has
get
address
bytes
for
when
you
need
to
turn.
So
it's.
E
C
No
mention
has
been
that
you
can
give
it
you
you,
you
allocate
your
buffers
once
that
you're
using
a
scratch
space,
and
then
you
can
write
into
it
in
as
long
as
it's,
at
least
as
long
as
what
you
need.
The
call
is
successful,
but
you
don't
necessarily
know
it
doesn't
necessarily
mean
that
you
wrote
exactly
that
many
bytes
we
need
offset
for
that
puts
pandas.
Now
you
can
place
the
span
to
start
wherever
you
wanted
to
start.
C
E
Know
is
it
just
so
that
you
don't
have
to
calculate
it
well,
this
is
you,
give
it
a
1k
buffer
yeah,
and
if
it's
ipv4,
it
wrote
four
bytes.
If
it's
ipv6
wrote
six
bytes,
but
why
don't
we
just
tell
you
how
many
bytes
we
wrote,
yeah
I,
just
with
100
or
the
case
where
you
do
it
because
out
perimeters
required,
you
don't
have
to
have
like
unused
yeah
yeah.
What
happens
in
practice,
though,.
A
Is
if
you
there,
because
you
always
have
to
advance
your
pointer
after
you're
done
so
you
might
as
well
so
either
you
calculated
or
you
take
it
as
an
hour,
but
you
you
will
have
to
have
that
they
do
sunder
anyway.
I
think
the
other
interesting
thing
is
like
we
just
said
this
convention
across
all
of
our
types,
because
in
sometimes
it's
there's
no
easy
way
to
compute
the
number
of
bytes
written
about
actually
doing
what
the
thing
does
that
compression
and
other
things,
and
so
there's
just
following
that
conventions.
B
A
D
Yeah
in
the
next
version
of
it,
yet
it's
a
shame
that
IP
Charles
as
never
capital
C
did
yeah
I.
Think
yeah.
This
is
the
other
question
I
had
is
like
I'm
just
looking
at
how
it
looks
like
like
Steven,
you
use
the
parameter
names
from
the
existing
type
and
suppose
when
I
step
ID
is
wrong,
but
they
have
IP
string.
That
is
right.
So,
whatever
I
guess
the
best
we
do,
but.
C
A
C
The
one
thing
I
didn't
include
here,
because
I
didn't
and
I
was
confused
in
my
head
when
I
was
talking
earlier
about,
try
ride
bytes,
but
I
didn't
find
a
ton
of
a
need
yet
at
least
for
kind
of
a
two
string
equivalent
for
IP
address.
So
what
we
would
have,
what
we've
been
calling,
try,
format
elsewhere
and
so
I
haven't
added
that
we
could
in
the
future.
If
we
found
a
need
for
it.
C
A
C
C
A
Any
other,
the
other
reason
why
I'm
slightly
trying
to
have
symmetry
is
I
could
see
us
being
forced
to
you
know,
take
some
of
these
to
API
changes
and
put
them
in
the
next
version
of
the
standard,
and
given
that
those
changes
are
not
super,
cheap
I
would
like
to
make
sure
that
those
are
like.
You
know,
consistent
badges
by
themselves.
We
don't
have
like
weird
bugs
filed
against
those
like.
Oh
you
have
this.
We
don't
have
that,
but
yeah
like
I,
don't
want.
D
C
Alright,
so
kids,
okay,
so
sockets
is
interesting.
So
there
are
a
gazillion
methods
on
sockets.
There
are
sync
versus
a
sync,
so
you've
got
like
you
know,
receive
and
receive
a
sync,
but
then
there's
also
every
kind
of
standard
we've.
Every
pattern
we've
ever
had
for
any
sink
is
on
sockets
as
well.
So
there's
begin
and
receive
there's
receive
a
sync
for
tasks.
C
Just
start
by
adding
what
we
believe
to
be
the
most
impactful
and
the
most
used
ones,
and
we
can
grow
from
there
as
necessary
and
to
me
that
means
basically
three
things.
One
is
synchronous,
send
and
receive
methods
that
work
with
spam,
who
are
asynchronous,
send
and
receive
that
work
with
tasks
or
in
this
case
value
tasks.
And
the
third
is,
if
you
scroll
down
a
little
bit
to
the,
where
I
have
the
socket
async
event.
C
Darts
are
send
and
receive
that
work
with
socket
async
event
args,
which
really
means
just
adding
to
socket
async
event
args
the
ability
to
put
to
use
buffer
as
its
buffer.
That,
in
theory,
will
actually
end
up
working
for
anything
that
works
with
socket
async
event,
arcs
just
another
way
of
supplying
the
buffer
instead
of
an
array
and
I.
Think
I
think
these
will
cover
the
99%
case
of
what
people
care
about
4-perf
and
there
might
be
a
little
bit
of
a
tail.
C
C
So
for
now,
I
follow
that
convention
and
put
these
there,
the
actual
implementation,
at
least
a
for.net.
Oh,
these
are
that
the
socket
ask
extensions,
are
all
one-liners
that
delegate
to
the
implementation,
that's
actually
on
socket
as
internal
methods.
So
the
if
we
put
these
on
socket,
ask
extensions.
These
would
follow
suit.
We
can
also
just
choose
to
start
now
putting
them
on
socket
if
we
so
chose
this.
A
D
C
A
A
F
C
The
convention
we
discussed
was
using
the
the
same
name
that
currently
exists
for
those
methods
and
the
send
and
receive
methods
that
take
byte
arrays,
call
it
buffer
yeah
a
little
unfortunate
but
other
than
you
know.
Following
whatever
convention,
we
wanted
I'm,
not
an
all
tied
to
this
name.
I
know.
F
A
G
F
C
There
are
a
couple
other
overloads
of
send
and
receive
that
I
have
to
me
that
I've
not
provided
overloads
for
here
in
particular,
there's
an
overload
of
sent,
for
example,
that
rather
than
communicating
failures
via
an
exception,
it's
got
an
out,
socket
error,
parameter
and
I
sort
of
put
that
into
one
percent
of
like
we
can
deal
with
that.
If
we
need
to
but
not
add
over
those
for
it
now,
I
don't
know
people's
different
opinion.
G
A
C
C
C
A
C
E
C
B
C
C
C
C
Well,
then,
I
guess
that
okay,
so
the
socket
async
event
args.
This
is
that
you
know
the
third
category
and
this
is
sort
of
the
high-efficiency
one.
So
this
is
the
most
important
one.
People
I
care
about
perf,
there's
already
a
set
buffer
method
that
just
takes
you
know
an
array
so
that
one's
easy,
there's
also
a
buffer
property
with
a
getter
that
returns
whatever
buffer
was
set.
C
So
we
can't
just
if
you
want
to
be
able
to
ask
the
buffer.
We
can't
just
you
know,
overload
the
property,
so
my
suggestion
was
to
add
a
method
that
returns
a
buffer
byte
and
it
can
either
return.
It
can
return
any
of
whether
whether
you
set
it
with
the
buffer
overload
or
with
the
byte
array
overload,
because
it
can
wrap
a
byte
array
in
a
buffer.
C
E
C
You
I
think
either
misspoke
or
you
misunderstood,
so
there's
only
two
ways:
a
buffer
could
get
into
this
thing,
either
with
calling
set
buffer
that
takes
an
array
or
calling
set
buffer
that
takes
a
buffer.
If
you
call
that
buffer
that
takes
a
buffer,
then
get
buffer
just
returns
exactly
what
you
store
it.
If
you'd
call
set
buffer
that
takes
an
array
you
already
have
the
array,
you
can
wrap
it
in
a
buffer,
100
I'm
you.
C
E
C
C
Because
they
didn't
check
that
it
could
ever
be
null
well
if
they
didn't
check
that,
could
never
be
no,
but
they
changed
their
code
to
use
the
new
stuff
and
I
mean
that's
I'm.
Just
wondering
about
intermix
is
here
of
like
I
mean
it
could
previously
be
known
as
well,
if
they
hadn't
setup
off
or
if
they,
if
they
had
set
like
a
buffer
list
on
the
thing
that
it
would
also
be
known.
Okay,
not
knowing
the
API
I'm
just
concerned.
C
If
me,
as
somebody
writing
code,
I
change
it
and
then
I'm
also
calling
another
library
and
they're
receiving
it
and
don't
and
they
haven't
changed
to
span
models,
am
I
going
to
be
introducing
new
bugs
I.
Don't
think
this
introduced
is
anything
that
you
couldn't
already
have
in
that
case.
So
there's
there's
already
the
ability
to
set
up
an
individual
buffer
or
multiple
buffers,
and
if
you
switch
from
like
a
single
buffer
to
multiple
buffers,
then
that
nulls
out
the
single
buffer,
so
okay,
pretty
good
null.
In
that
case,.
A
C
You
can
take
your
one
of
these
sockin
async
event
args
with
the
buffer
and
the
offset
or
whatever
you
want
and
they're,
not
on
socket,
like
send
and
receive
that
take
a
single
argument:
the
socket
a
sec
event
darts,
and
so
you
give
you
call
socket
dot,
send
with
the
socket
a
sync
event
args
and
it
internally
takes
the
data
from
the
socket
async
event
args
and
tries
to
send
it.
If
it's
able
to
do
so
synchronously,
it
returns
false,
meaning
it's
not
pending.
C
C
A
C
A
A
A
C
C
The
one
interesting
thing
about
receive
other
than
you
know
it's
argument,
which
is
a
buffer
instead
of
an
array
of
segments,
is
the
existing
receive
a
a
sink
method
returns
a
task
of
WebSocket
receive
result,
even
if
that
completes
synchronously.
You
then
end
up
with
two
allocations:
one
for
the
task
and
one
for
the
WebSocket
receive
result,
I'm
suggesting
that
we
address
both
of
those
by
having
this
return,
a
value
task
and
creating
this
value
WebSocket
receive
results
which
would
be
exactly
the
same
as
the
class,
but
a
struct
version.
C
A
C
E
C
On
socket
today,
cancellation
tokens,
which
is
both
problematic
for
like
people,
have
asked
for
it,
and
so
we
could.
We
could
do
that.
We
could
add
cancellation
token
to
the
new
asynchronous
methods.
Jeff
and
I
were
actually
talking
about
that
the
other
day
and
how
we
would
potentially
implement
that.
C
Even
if
we
can't
implement
that
it's
better
to
take
it
now
and
figure
out
how
to
implement
it
later
right
unless
we
could
never
implement
it,
I
mean
I
generally
agree
with
you,
but
if
there
was
an
absolutely
no
way
to
do
it,
then
it
might
be
misleading
but
yeah.
If
there's
any
chance
of
us
doing
it
I
think
it's
better
to
take
it
than
not.
C
C
E
C
I,
don't
believe
the
existing
API
is
had
it,
but
maybe
that's
something
we
want
to
fix.
I
know
that
had
opened
the
API
proposal
to
get
it
on
text
reader
and
a
writer
or
whatever,
and
it
got
filed
as
future
and
I.
Don't
think
Jeremy
Koons
ever
looked
at
it,
and
so
it's
my
request.
This
is
this
could
be
the
way
to
do
with
them.
C
C
But
yeah
so
for
socket
I'm,
trying
to
remember
how
we
would
I
think
I
think
we
we
figure
out
how
to
do
it
on
both
UNIX
and
windows.
With
a
reasonable
approach,
Meishan
I
think
Linux.
We
would
work.
We
manage
a
lot
of
the
implementation
ourselves,
so
we
would
be
able
to
like
unregister
the
handles
from
the
e
pole
and
on
Windows
I
think
we
confirmed
we
were
able
to
use
the
cancel,
IO
X
or
whatever
it's
called
function,
but
we'd
have
to
double
check.
C
Do
we,
if
we're
adding
the
structs
equivalent
of
an
existing
class,
do
we
want
to
make
an
accelerator
method
to
return
the
reference
type
in
case?
Somebody
wants
to
pass
it
to
existing
API,
or
do
you
think
it's
marginal
enough
that
they
can
copy
it
themselves?
I
think
it's
marginal
enough!
They
can
copy
it
themselves.
Okay,.
C
C
D
C
C
C
Downloading
data
from
the
web
seems
like
a
perfect
example
where
you
don't
know
how
much
space
you're
going
to
need,
and
it's
also
really
expensive
to
try
again
so
I
wasn't
really
sure
what
we
wanted
to
do
for
a
signature
here.
If
we
want
to
add
something
like
this,
you
can
always
call
get
stream
async
and
then
take
the
resulting
stream
and
continue
know
and
read
into
a
buffer
repeatedly.
So
it's
not
that
much
more
owners
to
do
that,
but
Christophe
had
explicitly
asked
for
an
API
like
this,
so
I
threw
it
in
I.
C
C
The
the
issue
with
the
allocation
is
just
adding
that
method
isn't
going
to
help,
because
the
communication
between
you
should
be
client.
An
HTTP
client
handler
is
in
terms
of
a
stream,
so
unless
we
actually
add
new
api's
to
HP
client
handler
and
kind
of
plumb
that
concept
of
stream
lessness
all
the
way
through
it
won't
help.
C
C
A
Good
system
identity
to
begin
with,
because
I
think
this
thing
is
like
you
know,
super
efficient
or
bidi
yeah
I
mean
it's
Bennett.
Is
writing
you
a
prize
for
particular
reasons?
Maybe
maybe
it's
good
look.
We
have
a
guys
and
never
they
are
whether
there's
it's
with
the
or
whatever
to
you
know,
so
that
you
can
just
use
them
without
having
double
yeah.
C
Alright,
so
let's
get
that
one
for
now
I
do
think.
The
second
piece
is
still
valuable.
So
just
as
we're
we
talked
about
having
a
buffer,
a
buffer
stream
or
a
read-only
buffer
stream
with
HTTP
client.
You
want
to
be
able
to
when
you
make
your
requests.
If
you
want
to
have
a
body
in
your
request
like
for
a
post,
you
want
to
be
able
to
give
it
the
data
to
upload,
and
you
do
that
by
deriving
from
HTTP
content.
We
have
several
built-in
derived
HP
contents.
We
have
a
byte
array
content.
C
We
have
a
stream
content.
It
seems
to
make
sense
to
me
that
if
you
had
a
buffer,
you
just
want
to
be
able
to
upload
that
we
should
have
a
read-only
buffer
content
as
well.
This
is
only
for
like
post
yeah.
This
would
be
for
uploading
data
as
part
of
the
request,
so
typically
for
posts
on
your
a
put
or
a
get
with
a
body
the
right
so
on
I
get.
How
does
somebody
control
whether
they
would
get
a
read-only
buffer
content
or
a
byte
content?
A
C
So
maybe
Jeremy
you
want
to
talk
to
this
or
should
I
you're
doing
a
good
job.
C
Okay,
so
there
are
a
bunch
of
classes
that
all
look
very
similar.
There
are
all
these
base
classes
for
different
kinds
of
cryptographic,
algorithms,
and
for
the
most
part,
what
I
have
here
are
taking
the
existing
byte
array
based
methods
on
the
base
classes
and
adding
versions
of
them
that
work
with
spans.
C
C
A
A
C
Right,
okay,
on
to
the
next
20
minutes,
so
the
transform
block
and
and
transform
final
block
those
come
from
I
crypto
transform.
So
we
actually
tried
removing
the
I
crypto
transform
notion
of
hash
algorithm
but
had
to
bring
it
back
for
cord
to
oh
I
would
be
happy
to
see,
transform
block
and
transform
final
block.
Not
come
back
they're,
not
nice
verified.
We
made
incremental
match
to
separate
the
all
events
all
right,
so
you
don't
think
those
are
necessary,
correct,
okay!
So
the
only
reason
the
existing.
C
C
Being
removed,
those
are
not
being
yeah.
If
someone
came
to
us
and
said
well,
I,
you
know
I
want
to
use
these.
What
do
you
recommend
me
say
we
recommend
you
go
to
incremental
hash
instead,
okay
does
that
have
any
impact
on
I
know.
This
is
a
sec,
separate
discussion
for
crypto
stream
and
the
interface,
but
does
that
impact
that
scenario
it
could
and.
C
G
C
A
The
only
question
that
I
have
is
so
the
only
have
for
these
incremental
ones
like
try,
compute
I
should
isn't
there
the
idea
that
you
also
return
how
many
things
here
read
from
the
input.
Usually
this
reads
the
whole
islets
sure.
But
let's
say
it
reads
the
whole
input
and
then
it
can
actually
write
the
the
hash
so
I'm
going
to
start
it
over
again.
In
the
case.
C
Of
hash
algorithm,
it
has
a
property
that
tells
you
how
many
bits
it's
going
to
write,
which
is
functionally
equivalent
to
telling
you
how
many
bytes
it's
going
to
write
so
like
the
convert.
Api
is.
This
would
start
with
a
pre-check
of
you
didn't
give
me
enough
space
as
it
just
fails
without
reading
I.
C
That
number
me:
how
do
you
envision?
Is
there
an
issue
with
try
hash
final,
like
if
you
give
it
I
guess
if
you
give
it
too
small
a
span
to
write
out
the
final,
whatever
it'll
just
return
false,
without
having
done
anything
so
bytes
written
will
only
ever
be
0
or
the
complete
number
of
bytes
that
it
finalized
yeah
and
because
we
should
only
be
calling
try,
hash
final
from
compute
hash
and
computer
I
should
have
only
called
it.
If
this
ban
was
big
enough,
I
see
okay,.
C
How
do
these
work
in
general,
with
with
I
like
append
data,
when
you
append
data,
it's
really
just
updating
its
own
internal
incremental
hash,
so
it's
not
actually
consuming
any
more
memory
right.
You
could
call
this
a
million
times
and
you're
you're
not
actually
increasing
the
memory.
Consumption
of
the
incremental
hash
object,
correct.
E
Jen,
it's
great
it's
so
much
better
than
the
old
yeah.
We
invented
that
for
a
net
core
one,
so
yeah.
If
so,
I
was
laughing
before
when
you
said,
is
there
a
problem
with
right?
Keep
your
hash!
Fine,
maybe
because
that
API
is
impossible
to
use
I
think
the
implementation
is
broken
in
the
transform
block
and
compute
hash
intermix
in
in
bad
ways,
and
then
there's
a
property
that
also
that
you
mix
isn't
a
bad
way.
Yeah
I
think
there's
even
some
times
that
we
have.
C
Okay,
I'm
RSA
I
think
it's
decrypt
value
and
encrypt
value
and
we
lost
no.
No,
we
did
it.
The
screen
just
turned
that
my
cat
vision
said
something
moved
decode
value
that
in
crack
value
I,
think
we've
never
implemented.
So
we
shouldn't
ever
implement.
We
shouldn't
add
the
new
thing
with
spam
on
a
they
throw
today,
I
think
so
it.
In
fact,
we
have
never
described
what
the
method
should
do
because
in.net
framework,
one,
oh,
they
came
out
of
the
gate
with
this
throws,
don't
call
it.
C
G
A
A
C
G
C
What
happens
if
not
enough
data
was
given?
Do
they?
They
just
simply
know
they
throw
okay,
that's
not
the
existing
ones.
Work
I
said
yeah
yeah,
like
so
decrypt
either
returns
data
or
throws.
So
if
you
don't
give
it
okay,
if
you
don't
give
it
a
block
size
thing,
a
perfectly
block
size
thing:
it
will
throw
if
the
padding
doesn't
check
out
it'll
throw
encrypt.
If
you
give
it
too
much,
it'll
throw
and
I,
presumably
there's
little
value.
Well,
how
do
we
want
to
handle
the
output
destination
being
too
small?
C
C
C
C
Only
did
that
in
cases
where
they're
like,
where
there
were
multiple
overloads-
and
you
know
in
the
smallest
overload,
it
would
have
been
right
next
to
it,
but
once
we
start
adding
in
the
additional
parameters
you
want
them
to
be
optional
rather
than
having
multiple
overloads.
We
just
have
an
optional.
Have
all
the
parameters
be
optional
and
except
for
the
out,
so
the
out
is
before
the
optional
ones.
I
guess
once
we're
making
it
try.
Decrypt
we
come
back
again
to
the
Patronus,
is
gonna
yeah.
Are
we
trying
to
report
as
bad
or
just
that?
C
In
is
it
possible
with
these
api's,
to
like
to
restart
from
a
later
point
like?
Did
you
find
that
you
read
five
bytes,
you
decrypt,
you
know
you
write
to
output
and
then
you
decide
well
in
order
to
decrypt.
The
next
three
actually
need
two
more
bytes,
so
you've
returned
how
many
were
read,
how
many
were
written
and
have
someone
start
over
from
later
in
the
input?
No
RSA
is
a
atomic
encryption
and
decryption.
C
C
Decrypt
is
always
less
than
that,
but
the
amount
depends
on
what
the
encrypted
data
was
so
summit
I
mean
for
encrypt,
like
if
I,
if
the
key
size
was
a
hundred
bytes
and
I
gave
it
a
thousand
bytes.
Does
that
mean
that
I'm
sorry,
if
the
key
size
was
a
hundred
bytes
and
I,
gave
it
980
bytes?
Does
that
mean
that
I
could
successfully
get
nine
hundred
bytes
out
of
output
and
then
have
80
bytes
left
over
that
I
might
want
to
start
over
with
once
I
give
it
a
larger
buffer.
C
C
More
than
one
block
of
data
RSA
is
not
a
chaining
algorithm,
it's
an
atomic
algorithm
I
see.
So
if
you
have
a
2048-bit
key,
let's
pretend
I
converted
that
to
bytes
correctly
I
think
it's
512.
If
you
give
it
more
than
like
480
bytes,
it
will
throw
just
say
like
this:
is
illegal
and
illegal
use
of
RSA
with
this
key
and
then
yeah,
so
encrypt
will
always
act
exactly
key
size
in
bytes
or
throw
so
we've
got.
You
know
an
arbitrary
stream
of
data
they
want
to
encrypt,
they
break
it
up
into
pieces
themselves.
C
C
Want
to
make
sure
that
yeah,
so
the
only
one
that
could
be
try
giving
me
a
bigger
span
and
rewriting,
and
you
couldn't
have
a
hundred
percent
predicted
it
though
you
do
know
a
minimum.
You
know
the
maximum
that
decrypt
will
produce
as
the
key
size,
so
one
could
always
make
sure
their
spans
big
enough
in
that
case,
but
decrypt
would
have
the
oh
I
needed
to
write
eleven,
and
you
only
gave
me
ten
so
I
need
to
return
false
instead
of
throw
because
the
decryption
succeeded.
C
C
I
suppose
so
it's
the
the
read-only
span
won't
increment
on
decrypt.
So
we
don't
need
to
tell
you
how
much
we
incremented.
We
just
need
to
tell
you.
We
wrote
nothing
or
we
wrote
the
correct
number.
So
decrypt
definitely
needs
the
output
value
because
it's
dynamic
and
encrypt
we'll
get
it
just
because
you
know
conventions.
A
C
So
create
signature,
it
will
consume
everything
from
hash
it'll,
throw
if
hash,
isn't
legal
for
the
algorithm
and
then
it'll
output
to
the
signature
which
could
you
could
have
given
it
not
enough
space.
So
that
should
be
a
try,
so
try
create
signature
protected,
try,
hash
data
in
public,
try
signed
data.
C
So
there
is
this
AI
crypto
transform
interface,
which
is
what
like
a
symmetric
algorithm
used
with
symmetric
algorithms
like
creating
krypter
and
create
decrypter,
so
you
call
creating
krypter
krypter
krypter
you
get
back
an
I
crypto
transform,
which
has
methods
on
it.
Transform
and
transform
final
I
think
that
work
with
bytes
hydrates
rather
yeah.
Really
you
want
to
augment
I
crypto
transform
with
really
you
want
the
fault
interfaces
here.
You
want
to
default
interface
abilities.
C
You
want
to
be
able
to
add
new
methods
that
work
with
span
that
would
have
a
default
information
implementation
that
goes
to
the
binary
ones,
but
that
an
implementation
can
overload
to
do
the
more
efficient
thing.
But
we
don't
have
default
interface
implementations
yet,
which
leaves
us
with
a
few
options
one.
We
can
do
nothing
so
for
things
like
AES,
there
is
no
span
option.
C
A
A
A
At
the
same
time,
though,
like
it
seems
like
when
we
would
do
a
three,
we
can
still
do
four
and
the
world
wouldn't
end
right.
I
mean
it's
not
that
you
know
any
of
these
API
czar
I,
don't
know
like
a
poster
child,
for
you
know
beautiful
API
design,
so
I
I,
guess
that
would
still
allow
us
to
blend
these
two
universes
and
then
you
code
would
just
be
able
to
use
I
cook
the
transform
and
everything
would
be
fine.
G
C
A
We
know
we
talked
about
that
I
mean
this
goes
back
to
most
of
the
conversation
that
the
runtime
team,
or
it
highly
depends
on
who
you're
talking
to
again
most
of
the
time
most
of
the
person
in
both
this
design
was
spans.
Fences
I
would
I
would
call
it
optimist,
so
he's
like,
of
course
we
can
do
that.
I
think
John
was
also
very
much
in
favor
of
adding
it,
but
it
was
more
concerned
that
there
may
be
some
things.
E
A
So
yeah
I
think
that
yeah
I
can
talk
to
them
again
and
see
like
where
we
are
with
this,
but
I
suspect.
This
is
not
the
last
time
we
have
to
fall
into.
It
will
be
nice
if
we
would
come
up
with
a
way
to
do
it
at
I
kind
of
like
three
before,
because
it
allows
us
to
booster
bar
ourselves
and
have
like
an
interim
release
for
just
the
full
framework
where
the
growth
doesn't
end.
You
can
span
define
most
of
the
stuff
and
then
encore
your
slide
ahead
yeah.
G
C
C
A
Think
that
meant
to
me
is
all
to
the
question
of
like
so
let's
say
we
don't
do
anything
right.
Let's
say
we
would
go
function
under
one.
Would
it's
a
problem
that
the
the
you
know,
TLS
implementation,
if
you
would
use
encore,
ends
up
having
to
allocate
more
because
it
has
to
go
through
the
shitty
API,
because
in
that
case
you
know
my
father,
it
would
be
okay.
Can
we
do
something
internally
and
then
can
we
do
so
smart
later
on?
E
G
A
A
C
C
C
F
C
C
C
C
C
C
A
C
C
C
We
leave
that
up
to
Tomas
and
Nick
and
whoever
else
is
focused
a
lot
on
metadata
and
if
and
when
it's
an
issue
they
can
choose
to
propose
api's
there
yeah,
you
know,
did
you
get
the
meta
note
to
make
sure
that
all
of
our
async
things
took
cancelation
tokens
or
to
go
back
and
scan
again
and
see
if
any
of
the
ones
that
don't
have
it
are
correct
and
not
having
it?
Yeah
and
I
can
go
through
and
do
that.
If
we
don't
have
time
now.
A
A
C
A
I,
don't
know
like
my
my
gut
feel,
is
if
you
look
at
generally
buffer
management.
I,
don't
think
collections
is
something
that
is
super
important
because
I
I
guess
you
don't
really
have
many
collections
that
you
need
to
efficiently
copy,
as
is
to
something
right
because
I
mean
you
kind
of
want
to
do
a
for
loop
over
the
collection
and
then
whatever
you
storm
the
collection,
you
wanna
be
able
to
format
that
fast
into
a
buff
RIT.
It's
out
there.
C
C
C
A
No
okay!
So
what
what
I
said
is
that
I?
Don't
think
that
collections
is
right
now
I
mean
I'm
gonna,
post
an
Elysian
eyes,
but
I
don't
think
there's
many
scenarios
bear
copy
to
be
beneficial
in
terms
of
buffers
right,
because
you
don't
really
have
many
15
cases,
for
you
know
a
list
of
indoor
list
of
five
that
you
wanted,
for
example,
and
code,
your
at
Clinton
array
right
most
of
the
time
you
end
up
before
looping,
probably
over
the
thing
you
have,
and
then
you
know
format
that
guy
directly,
the
question
would
be.
C
A
I
mean
that,
because
that's
kind
of
what
do
you
have
to
do
it
and
I
mean
most
of
the
time
you
don't
really
have
I
mean.
Even
if
you
look
at
pipelines,
there's
not
many
cases
for
a
span
of
school.
It's
almost
always
span
of
five.
In
almost
all
case
set
or
char
watch
are
right
and
then
even
injure
someone
there.
That
I
mean
that's
I'm,
saying
I
mean
unless
there's
some
compelling
reason
why
we
need
those.
It
seems
like
over
the
clock.
Yeah
look
at
out
of
it,
you
need
them.