Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote:
Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote:
HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote:
Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
Ooops!
Frame Probes which detect the incoming frame and installing the apropos protocol Operations class to establish the correct encryption with that detected protocol’s handshake and state machine. I have it working with v3.6!!
That would be unfortunate to not be able to establish encryption for a series of datagrams between the same 2 parties.
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:19, rabbit rabbit@callistohouse.org wrote:
Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote:
Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote:
HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote:
Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
> On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote: > Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
> On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: > Hi Ron, > > I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON. > > In looking at Object>>#asn1Tag we construct a tag with > > Object>>#asn1Tag > > ^ (ASN1MappedSequenceType new asn1Tag "48" > bitOr: 2r11000000) "Application" > bitOr: 2r00100000 "Constructed" > > So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call: > > ^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag) > > So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType. > > I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object. > > My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass. > > Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh! > > Thanks! > > -- > Have a good one; keep it, light. > Kindly, > rabbit > . .. … ‘…^,^ > > Sent from Callisto House :: decentralized mobile homeless solutions
Hi Rob,
Excellent. Glad to hear it.
Ron
On Fri, Sep 9, 2022 at 10:41 PM rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote:
Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote:
HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote:
Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
Hey Ron, good morning to ya!
We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization.
Do you have a protocol specification I could read?
The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP.
What is this? UDP allows for more bandwidth? Very interesting! Huge amount of data? How much? Live Video?
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 22:42, rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
>> On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote: >> > > Hey Rob, > > I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. > > Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it. > > All the best, > > Ron Teitelbaum > >> On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: >> Hi Ron, >> >> I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON. >> >> In looking at Object>>#asn1Tag we construct a tag with >> >> Object>>#asn1Tag >> >> ^ (ASN1MappedSequenceType new asn1Tag "48" >> bitOr: 2r11000000) "Application" >> bitOr: 2r00100000 "Constructed" >> >> So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call: >> >> ^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag) >> >> So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType. >> >> I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object. >> >> My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass. >> >> Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh! >> >> Thanks! >> >> -- >> Have a good one; keep it, light. >> Kindly, >> rabbit >> . .. … ‘…^,^ >> >> Sent from Callisto House :: decentralized mobile homeless solutions
Hi Rob,
Well in general UDP is faster and simpler. There is no connection. You send a request and get packets back. The server doesn't know and doesn't care if you get anything back. Without all the coordination you get much more data. You also get less reliable transport and no automatic retransmission of lost packets. So the client gets much more data but it also has to handle lost packets somehow. This makes sense when there are a lot of clients that need a lot of data. I'll open the pipe to you and you handle as much of the pipe as you receive. If you miss something that's on you. That is why DTLS is needed. We can't open a stream because as you know if we lose one packet our stream is useless. You have to encrypt each datagram so you can decrypt what you get.
All the best,
Ron Teitelbaum
On Sat, Sep 10, 2022 at 8:54 AM rabbit rabbit@callistohouse.org wrote:
Hey Ron, good morning to ya!
We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization.
Do you have a protocol specification I could read?
The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP.
What is this? UDP allows for more bandwidth? Very interesting! Huge amount of data? How much? Live Video?
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 22:42, rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote:
Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote:
HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote:
Hey Rob,
I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding.
Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.
All the best,
Ron Teitelbaum
On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote:
Hi Ron,
I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON.
In looking at Object>>#asn1Tag we construct a tag with
Object>>#asn1Tag
^ (ASN1MappedSequenceType new asn1Tag "48" bitOr: 2r11000000) "Application" bitOr: 2r00100000 "Constructed"
So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call:
^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag)
So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType.
I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object.
My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass.
Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh!
Thanks!
-- Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
This is where Kafka enters with durable, fault-tolerant event queuing.
We can't open a stream because as you know if we lose one packet our stream is useless.
Is it not possible to handle a missed event as a resilience feature? With Kafka you can get guaranteed message deliver. Does it run over UDP? I do not know.
You have to encrypt each datagram so you can decrypt what you get.
You can use the same shared key already established during rendezvous with Diffie Hellman though, yes? You don’t need to renegotiate for each event do you?
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 10, 2022, at 09:35, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Well in general UDP is faster and simpler. There is no connection. You send a request and get packets back. The server doesn't know and doesn't care if you get anything back. Without all the coordination you get much more data. You also get less reliable transport and no automatic retransmission of lost packets. So the client gets much more data but it also has to handle lost packets somehow. This makes sense when there are a lot of clients that need a lot of data. I'll open the pipe to you and you handle as much of the pipe as you receive. If you miss something that's on you. That is why DTLS is needed. We can't open a stream because as you know if we lose one packet our stream is useless. You have to encrypt each datagram so you can decrypt what you get.
All the best,
Ron Teitelbaum
On Sat, Sep 10, 2022 at 8:54 AM rabbit rabbit@callistohouse.org wrote: Hey Ron, good morning to ya!
We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization.
Do you have a protocol specification I could read?
The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP.
What is this? UDP allows for more bandwidth? Very interesting! Huge amount of data? How much? Live Video?
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 22:42, rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
>> On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote: >> > > Hi Rob, > > Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting. > > UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt. > > All the best, > > Ron Tetielbaum > >> On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: >> HAH HAH HAH HAH!!! >> >> Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^ >> >> I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed. >> >> You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ] >> >> Yes, I’ll need to see about this. Some sort of >> >> ASN1 tagValues:= object class instVarNames >> collect: [ :ivarName | object instVarAt: ivarName ]. >> ^ Array with: object className with: tagValues. >> >> You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.] >> >> What is keeping you busy these days? >> >> Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :( >> >> Cheers! >> >> Have a good one; keep it, light. >> Kindly, >> rabbit >> . .. … ‘…^,^ >> >> >> Sent from Callisto House :: decentralized mobile homeless solutions >> >>>> On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote: >>>> >>> >>> Hey Rob, >>> >>> I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. >>> >>> Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it. >>> >>> All the best, >>> >>> Ron Teitelbaum >>> >>>> On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: >>>> Hi Ron, >>>> >>>> I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON. >>>> >>>> In looking at Object>>#asn1Tag we construct a tag with >>>> >>>> Object>>#asn1Tag >>>> >>>> ^ (ASN1MappedSequenceType new asn1Tag "48" >>>> bitOr: 2r11000000) "Application" >>>> bitOr: 2r00100000 "Constructed" >>>> >>>> So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call: >>>> >>>> ^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag) >>>> >>>> So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType. >>>> >>>> I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object. >>>> >>>> My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass. >>>> >>>> Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh! >>>> >>>> Thanks! >>>> >>>> -- >>>> Have a good one; keep it, light. >>>> Kindly, >>>> rabbit >>>> . .. … ‘…^,^ >>>> >>>> Sent from Callisto House :: decentralized mobile homeless solutions
An update on my use of ASN1.
In ParrotTalk’s stack the handshake protocol messages are encoded using ASN1. However I am calling a method, #asASN1DerBytes I think, on the object (PTFrame with an ASN1 see encoded header of a subclass of an abstract header class which is encoded as a ChoiceType with all subclasses registered as possible choices). The class side of these headers have a #readFrom: which decodes the correct choice header. In both cases I am not using an ASN1InputStream or an ASN1OutputStream. As I am providing the header ChoiceType for both encoding and decoding, I do not use the #asn1Tag I use the #headerType. So my ParrotTalk msg classes do not have an #asn1Tag defined.
In my current attempt to use an EncoderThunk above the encryption thunks to en/decode ASN1 for RemotePromises msg traffic I am using an ASN1ScopedInputStream and an ASN1ScopedOutputStream. The Scope part has #internalize: and #externalize: to substitute proxies and so forth. The ASN1ScopedInputStream and an ASN1ScopedOutputStream both implement a #typeForTag: and ask the object or the encoded DERStream peek on decode to get the #asn1Tag, then lookup the type based on the tag. This does not work for either ParrotTalk msgs nor RemotePromise msgs, as there is no tag defined. I want to use the streams so I need to define a tag for all these msgs. I think they should be of an #application tagClass but not constructed. Then the headerType can be the #asn1Tag, #bitOr:ed with the application tagClass. Then on decode, lookup the derStream encoded tag and search for the type among the application defined ASN1 types. RemotePromises and ParrotTalk headers would have to have unique tags among the application tagClasses, so they must be different.
I believe incorporating #asn1Tags is the right way to get the ASN1Streams working right to Implement substituting Remote Promise traffic. The great news is finding this disparity!
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 22:41, rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote:
Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: HAH HAH HAH HAH!!!
Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^
I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed.
You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ]
Yes, I’ll need to see about this. Some sort of
ASN1 tagValues:= object class instVarNames collect: [ :ivarName | object instVarAt: ivarName ]. ^ Array with: object className with: tagValues.
You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.]
What is keeping you busy these days?
Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :(
Cheers!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
>> On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote: >> > > Hey Rob, > > I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. > > Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it. > > All the best, > > Ron Teitelbaum > >> On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: >> Hi Ron, >> >> I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON. >> >> In looking at Object>>#asn1Tag we construct a tag with >> >> Object>>#asn1Tag >> >> ^ (ASN1MappedSequenceType new asn1Tag "48" >> bitOr: 2r11000000) "Application" >> bitOr: 2r00100000 "Constructed" >> >> So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call: >> >> ^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag) >> >> So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType. >> >> I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object. >> >> My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass. >> >> Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh! >> >> Thanks! >> >> -- >> Have a good one; keep it, light. >> Kindly, >> rabbit >> . .. … ‘…^,^ >> >> Sent from Callisto House :: decentralized mobile homeless solutions
After some investigations, I think I will make crypto classes be of the PRIVATE tagClass and the ParrotTalk and Remote Promise types will be APPLICATION tagClass.
When I initializeASN1Types, I will register different types to a global tagClass repository, for each tagClass
{APPLICATION <2r01> | CONTEXT <2r10> | PRIVATE<2r11>}.
Then on decode the asn1Tag can be broken down into {tagClass | isConstructed | userTag}, and the type looked up by userTag in the appropriate tagClass repository for the #decode: type discovery.
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 12, 2022, at 04:35, rabbit rabbit@callistohouse.org wrote:
An update on my use of ASN1.
In ParrotTalk’s stack the handshake protocol messages are encoded using ASN1. However I am calling a method, #asASN1DerBytes I think, on the object (PTFrame with an ASN1 see encoded header of a subclass of an abstract header class which is encoded as a ChoiceType with all subclasses registered as possible choices). The class side of these headers have a #readFrom: which decodes the correct choice header. In both cases I am not using an ASN1InputStream or an ASN1OutputStream. As I am providing the header ChoiceType for both encoding and decoding, I do not use the #asn1Tag I use the #headerType. So my ParrotTalk msg classes do not have an #asn1Tag defined.
In my current attempt to use an EncoderThunk above the encryption thunks to en/decode ASN1 for RemotePromises msg traffic I am using an ASN1ScopedInputStream and an ASN1ScopedOutputStream. The Scope part has #internalize: and #externalize: to substitute proxies and so forth. The ASN1ScopedInputStream and an ASN1ScopedOutputStream both implement a #typeForTag: and ask the object or the encoded DERStream peek on decode to get the #asn1Tag, then lookup the type based on the tag. This does not work for either ParrotTalk msgs nor RemotePromise msgs, as there is no tag defined. I want to use the streams so I need to define a tag for all these msgs. I think they should be of an #application tagClass but not constructed. Then the headerType can be the #asn1Tag, #bitOr:ed with the application tagClass. Then on decode, lookup the derStream encoded tag and search for the type among the application defined ASN1 types. RemotePromises and ParrotTalk headers would have to have unique tags among the application tagClasses, so they must be different.
I believe incorporating #asn1Tags is the right way to get the ASN1Streams working right to Implement substituting Remote Promise traffic. The great news is finding this disparity!
Have a Good One; Keep it, Light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 22:41, rabbit rabbit@callistohouse.org wrote:
I cannot figure out how to respond to a previous email in Apple’s Mail client.
I am thinking now I do not need to figure out ASN1WrapperConstructedValue or the ExplicitContextType. I am not going to be passing objects that do not have an ASN1 map defined. The objects I am passing are well known, many passByCopy and all others passed as FarObjects, with ASN1 defined message passing. I’m switching RemotePromises from encoding with STON to encoding with ASN1. My STON tests was testing anonymous Object instances, without using maps. I need to change the tests to test all the ASN1 maps. Awesome!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:39, rabbit rabbit@callistohouse.org wrote:
Oh! I thought you were over UDP with TeaTime, I believe it was called. You guys already have an open spec for metaverse traffic! Add ObjCaps and the sky is the limit with secure transactions. It is everything Meta is trying to define and promote. You already have the solution!
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
On Sep 9, 2022, at 20:28, Ron Teitelbaum ron@usmedrec.com wrote:
HI Rob,
I see. We are using TCP secure sockets now with our own protocol to do an overlay network to allow for network prioritization. It all runs over one port which makes proxy support simple. The overlay network allows us to limit traffic to what is most important. Since we are not passing a huge amount of data we don't use UDP. Maybe at some point in the future it would be a good idea to look into it. I don't think it is necessary now. It might be interesting to look into UDP for 3D object data sometime in the future. Thanks for the offer.
All the best,
Ron
On Fri, Sep 9, 2022 at 8:19 PM rabbit rabbit@callistohouse.org wrote: Hey, yes I was think of getting ParrotTalk working over UDP, then RemotePromises on top of that, then place it underneath Croquet to combine a metaverse communications protocol with distributed secure object-capabilities alongside.
My latest ParrotTalk iteration is to get my SPADS Server working. The SPADS server will have multiple installed secure protocols (ParrotTalk v3.6, v3.7 & v3.8 as well as SSL 1.0, TLS 1.2, perhaps TLS 1.3 (with elliptical DH) and SSH. There is a probing frame buffer just above the socket thunk with protocol frame probes which
Have a good one; keep it, light. Kindly, rabbit . .. … ‘…^,^
Sent from Callisto House :: decentralized mobile homeless solutions
> On Sep 9, 2022, at 20:10, Ron Teitelbaum ron@usmedrec.com wrote: > Hi Rob,
Yeah I'm still working on Croquet at 3D Immersive Collaboration Corp www.3dicc.com. We renamed our product from Immersive Terf, before that Teleplace, and before that Qwaq, to Virtend. As in you can virtually attend a meeting.
UDP can be encrypted but since the stream itself is not guaranteed you would need to encrypt each datagram. I believe there is a good method for this using DTLS. https://www.rfc-editor.org/rfc/rfc4347.txt.
All the best,
Ron Tetielbaum
> On Fri, Sep 9, 2022 at 5:03 PM rabbit rabbit@callistohouse.org wrote: > HAH HAH HAH HAH!!! > > Yessir, it was a long time ago. According to your methods in ASN1ExplicitContextValue, it was 16 years ago, yesterday! . .. …. ‘…^,^ > > I am still undecided. Should Crypto ASN1 type structures (DSAPublicKey, and such) be of an application variety? But WrapperPrimitive perhaps, not constructed. > > You said: [ I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. ] > > Yes, I’ll need to see about this. Some sort of > > ASN1 tagValues:= object class instVarNames > collect: [ :ivarName | object instVarAt: ivarName ]. > ^ Array with: object className with: tagValues. > > You also wrote: [Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it.] > > What is keeping you busy these days? > > Didn’t you work with Croquet? Do you think ParrotTalk could talk and encrypt over UDP? I don’t understand how UDP works. :( > > Cheers! > > Have a good one; keep it, light. > Kindly, > rabbit > . .. … ‘…^,^ > > > Sent from Callisto House :: decentralized mobile homeless solutions > >>> On Sep 9, 2022, at 12:58, Ron Teitelbaum ron@usmedrec.com wrote: >>> >> >> Hey Rob, >> >> I'm not sure it was a long time ago. My understanding of the application flag is that it is for encoding tags that are application specific and not for ASN1 defined values. So the Context is an Application context not a default value. If we have a specific context and special rules for encoding or decoding a value it would be marked as application otherwise it should be marked as non-application specific to handle it using default rules. I believe that for Objects this makes sense if we are encoding them but you could easily encode them as class name with a bucket of values with default encoding. >> >> Wish I had more time to work on this but I'm sorry I don't right now. Good luck with it. Let me know what you decide to do with it. Happy to try and keep up to date on it. >> >> All the best, >> >> Ron Teitelbaum >> >>> On Fri, Sep 9, 2022 at 11:11 AM rabbit rabbit@callistohouse.org wrote: >>> Hi Ron, >>> >>> I see that originally when you had introduce ASN1 to our library, you defined the classes ASN1WrapperConstructedType and ASN1ExplicitContextValue. I tried to implement decode and encode to ASN1WrapperConstructedType, but only partially. I used your ASN1ExplicitContextValue but have not completed it. Now I have the need to implement, as I attempt to switch the PromisesRemote to using ASN1 encoding, rather than STON. >>> >>> In looking at Object>>#asn1Tag we construct a tag with >>> >>> Object>>#asn1Tag >>> >>> ^ (ASN1MappedSequenceType new asn1Tag "48" >>> bitOr: 2r11000000) "Application" >>> bitOr: 2r00100000 "Constructed" >>> >>> So we are an application class and constructed. In ASN1OutputStream>>#typeForTag: tag, the tag is broken down into the numericTag, the tagClass (application) and whether it is constructed. This is called from decode: anObject with the call: >>> >>> ^ self encode: anObject with Type: (self typeForTag: anObject asn1Tag) >>> >>> So Object>>#asn1Tag is called. So with a ASN1 non-registered object, we end up with a ASN1WrapperConstructedType. >>> >>> I am totally unsure about how the ASN1ExplicitContextValue should be used with the ASN1WrapperConstructedType, nor how it builds the context from the ivars of the provided anonymous object. >>> >>> My related concern is whether all of the crypto objects with ASN1 definitions ought to be of the application tagClass. >>> >>> Any guidance you could provide me for this would be very welcome! If it is not too far back in history! Heh! >>> >>> Thanks! >>> >>> -- >>> Have a good one; keep it, light. >>> Kindly, >>> rabbit >>> . .. … ‘…^,^ >>> >>> Sent from Callisto House :: decentralized mobile homeless solutions
cryptography@lists.squeakfoundation.org