Search results for

“eskimo”

37,531 results found

Post

Replies

Boosts

Views

Activity

Reply to macOS Archive builds and environment variables
The issue here is very likely to be the hardened runtime. Consider this sequence: % cp /usr/bin/true MyTrue % codesign -s - MyTrue MyTrue: is already signed % codesign -s - -f MyTrue MyTrue: replacing existing signature % DYLD_PRINT_LIBRARIES=1 ./MyTrue dyld[32846]: /Users/quinn/Test/MyTrue … lots and lots of output … % codesign -s - -f -o runtime MyTrue MyTrue: replacing existing signature % DYLD_PRINT_LIBRARIES=1 ./MyTrue % I copied the built-in true and re-signed it without the hardened runtime. In that case DYLD_PRINT_LIBRARIES does what you expect. OTOH, if I re-sign it again with the hardened runtime enabled, DYLD_PRINT_LIBRARIES stops work. As to why your new test project behaves differently, I suspect that you might have the Hardened Runtime capability enabled in some custom way in your real project. Regardless, you can test my theory by dumping the program’s code signature: % codesign -d -v MyTrue … CodeDirectory v=20500 size=272 flags=0x10002(adhoc,runtime) … … The presence of the hardened runtime
Topic: App & System Services SubTopic: Core OS Tags:
3d
Reply to NWConnectionGroup with Both Datagram and Non-datagram streams
Just to be clear, I’m in no way an expert on Core Media, but this looks like a Swift issue and I can certainly help with that. It’s hard to be 100% sure, because I’m not sure what the type of the bytes property of HEVCNALUnit is, but this looks like undefined behaviour. Specifically, this: let pointer = datas.map { $0.withUnsafeBufferPointer { $0 }.baseAddress! } is very suspicious because the closure you pass to withUnsafeBufferPointer(…) escapes its buffer parameter. In general, such buffers are only valid inside the closure itself, as explained in the docs: The pointer passed as an argument to body is valid only during the execution of withUnsafeBufferPointer(_:). Do not store or return the pointer for later use. This is exactly the sort of thing that tends to work in Debug builds but fail in Release builds, when the optimiser kicks in. For a single buffer you can move the work to inside the closure. For example, this code ensures has both the call to memchr and the interpretation of its result is within t
3d
Reply to WeatherKit JWT auth fails with Code=2 — entitlement confirmed in signed binary, all config verified, persists for weeks
AssuredBuyer, I looked at our side of your Q2UJCHMHJ7.com.newtendrelstudios.KazeDiorama App ID and it shows that the App ID has the WeatherKit capability enabled but not the WeatherKit app service. See this post for some screenshots of how things should look at your end. Please check the app service for Q2UJCHMHJ7.com.newtendrelstudios.KazeDiorama and reply back here with the results. davidfr22, I’ve no news to share, but rest assured that I haven’t forgotten you. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: General Tags:
3d
Reply to Updating App - Validation Hell - 90286, 91130
[quote='898677022, DrMiller, /thread/835497?answerId=898677022#898677022, /profile/DrMiller'] So, Xcode is not using the Team ID???? [/quote] Right. But your screenshot is good evidence that the App ID prefix has actually been changed, which is good. Try this: Navigate to the Certificates, Identifiers, and Profiles section of the Developer website. Under Profiles, start creating a new profile. Select App Store Connect and click Continue. Select your App ID and click Continue. Complete the rest of the workflow. Download the profile. Dump it: % security cms -D -i Test835497_Dist.mobileprovision | plutil -p - { … ApplicationIdentifierPrefix => [ 0 => Z7P62XVNWC ] … Entitlements => { application-identifier => Z7P62XVNWC.com.example.Test835497-T … com.apple.developer.team-identifier => Z7P62XVNWC … } … TeamIdentifier => [ 0 => Z7P62XVNWC ] … } Here you can see the App ID prefix property (ApplicationIdentifierPrefix) matches the Team ID property (TeamIdentifier) and that the App ID entitlement
3d
Reply to Command Line Tools bundled Python 3.9.6 flagged by vulnerability scanner
[quote='898565022, Etresoft, /thread/838682?answerId=898565022#898565022, /profile/Etresoft'] Just submitted FB23940030 [/quote] Fair enough. But just to set expectations here, LLDB is one of Apple’s core developer tools and Python is a core component of LLDB [1]. Breaking that dependency would be… tricky. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com [1] https://lldb.llvm.org/use/python-reference.html
3d
Reply to Supported architecture and organization requirement for an on-device iOS domain blocker
There are two parts to your question: What’s supported? What’s allowed on the App Store? I work for DTS and thus can only answer the first part. I have two suggestions for your App Store policy questions: You can ask them on App Store Distribution & Marketing > App Review. But you’re probably better off asking App Review directly. See their contact information on this page, and specifically the 30-minute video appointment thing. In contrast, support questions are DTS’s métier, so I’m happy to talk about that… From the DTS perspective, TN3120 is all about intent. If you plan to use a packet tunnel provider for something other than VPN then DTS won’t help you with that. One of DTS’s key goals is to help developers create products that will work now and in the future. We don’t support ‘off label’ use of packet tunnel providers because, in our experience, such solutions are brittle. You might be able to get something working at your desk, but then in it fails in specific environments or, worse yet, starts
3d
Reply to Executables crashing on MacOS BigSur version with dyld error - code signing blocked mmap
[quote='838949021, raghavendra_m, /thread/838949, /profile/raghavendra_m'] there is a warning about library validation. Could that be causing an issue? [/quote] Yes. Fix that before doing anything else. [quote='838949021, raghavendra_m, /thread/838949, /profile/raghavendra_m'] I'm concerned about VersionSDK being 0 and RuntimeVersion property not being present [/quote] Right. That’s the cause of the library validation issue. As to what’s causing that problem, I have a detailed writeup in Notarisation and the macOS 10.9 SDK. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: Code Signing SubTopic: General Tags:
3d
Reply to SecKeyDecrypt succeeds but UTF-8 decoding returns nil for one specific RSA ciphertext (1024-bit, kSecPaddingNone)
I’ve include a small test program at the end of this reply. Sorry it’s in Swift. I don’t have time to convert it to Objective-C right now. When I run this [1] it prints: plaintext: 20 <534f3230 32363035 31343037 33353037 33393734> cyphertext: 128 <3007a45e 5c98cff4 2ad26de6 da5aeb92 d596a17d ff991476 39a9464e 0cdf9ccd d1808adb 612d1952 90d4d0b1 e29f6abf 79e501bf 1ec73e0c 6900ed07 3f75f61e 7359aa4a dc5cc886 229e2aac 173c8d9b d51da884 05121f6c cb8d30fb 86b5f26c dbb6bd6d d9a382a7 8a1c5c66 7ccc2f8c 30c235e0 67acd0d8 48f236f0 258972d9> decrypted: 128 <00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 534f3230 32363035 31343037 33353037 33393734> There are a few things to notice here: The cyphertext and decrypted text are 128 bytes, which matches the RSA key size. This doesn’t match the size of the plaintext
4d
Reply to Issue with Native Socket Connection (Error 65) over WiFi Aware on iOS
[quote='898470022, DTS Engineer, /thread/838513?answerId=898470022#898470022'] My understanding is that there’s no good way to combine Wi-Fi Aware and BSD Sockets. [/quote] I’ve confirmed that with the Wi-Fi Aware engineering team. You should feel free to file an enhancement request for that support but, in the meantime, you’ll have to use Network framework. If you do file an ER, please post your bug number, just for the record. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
4d
Reply to Apps do not trigger pop-up asking for permission to access local network on macOS Sequoia/Tahoe
[quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] I have a customer on macOS 27 [/quote] So we’re talking about macOS 27 beta here, right? [quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] I do not have a repro myself. [/quote] Meaning that it works with macOS 27 beta in your environment, right? Or that you haven’t actually tested with macOS 27 beta? [quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] with my Store app [/quote] You mean your App Store app, right? If so, that reduces the chances of one of the more common pitfalls, namely having multiple copies of the app installed. Users who install apps from the App Store typically have a single copy of the app installed in the /Applications. A second cause of problems is the app not actually hitting the local network. I most commonly see this on iOS, where folks hard code en0 as the Wi-Fi interface, which is not something we
4d
Reply to TLS 1.2 session ID 不复用
At the URLSession level, the only control you have over this is the session itself. To maximise the chances of session reuse, you should issue all of your requests in the same session. [quote='838823021, yaya2026, /thread/838823, /profile/yaya2026'] we do not create a new session per request [/quote] Cool. Unfortunately that’s all you can do here. This allows the session to reuse the session ID, but it doesn’t require it. The session decides whether to do that based on its own internal logic. The pattern you’ve described — first connection does the full handshake, second connection resumes the session, third connection does the full handshake, and so on — is something I’ve seen before. I’ve never got to the bottom of why URLSession works this way. Historically it was happy to reuse a session ID multiple times. IMO your best option here is to move to a more modern HTTP protocol, so HTTP/2 or HTTP/3. Both of those run multiple requests over the same underlying (TCP or QUIC) connection. This will avoid this prob
4d
Reply to Exposing cloud-backed signing identities to third-party macOS apps with CryptoTokenKit
[quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] The flow I am trying to implement is: [/quote] Yep. That’s exactly the architecture that I’d expect you to use. [quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] Should [creating persistent entries] be done directly by the container application … ? [/quote] Yes. [quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] Is there any official Apple sample project … ? [/quote] No [1]. When driverConfigurations hangs, what does the backtrace look like? To see this, stop the process in the debugger, select the relevant thread, and run the bt command: (lldb) thread list Process 26106 stopped * thread #1: … * thread #2: … … (lldb) thread select 1 (lldb) bt Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com [1] I’ll be in touch via your DTS case soon, hopefully later today.
Topic: Privacy & Security SubTopic: General Tags:
4d
Reply to screenUnlockMode = 2 default of loginwindow makes it impossible to unlock the workstation on macOS 27
I’ve not seen this reported previously, but that doesn’t come as a huge shock. Login UI authorisation plug-ins are an obscure part of the OS. [quote='838847021, oleksandr91, /thread/838847, /profile/oleksandr91'] I have filed a feedback FB23918474 [/quote] Thanks. That’s the best path forward for an obvious regression like this. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: Privacy & Security SubTopic: General Tags:
4d
Reply to macOS Archive builds and environment variables
The issue here is very likely to be the hardened runtime. Consider this sequence: % cp /usr/bin/true MyTrue % codesign -s - MyTrue MyTrue: is already signed % codesign -s - -f MyTrue MyTrue: replacing existing signature % DYLD_PRINT_LIBRARIES=1 ./MyTrue dyld[32846]: /Users/quinn/Test/MyTrue … lots and lots of output … % codesign -s - -f -o runtime MyTrue MyTrue: replacing existing signature % DYLD_PRINT_LIBRARIES=1 ./MyTrue % I copied the built-in true and re-signed it without the hardened runtime. In that case DYLD_PRINT_LIBRARIES does what you expect. OTOH, if I re-sign it again with the hardened runtime enabled, DYLD_PRINT_LIBRARIES stops work. As to why your new test project behaves differently, I suspect that you might have the Hardened Runtime capability enabled in some custom way in your real project. Regardless, you can test my theory by dumping the program’s code signature: % codesign -d -v MyTrue … CodeDirectory v=20500 size=272 flags=0x10002(adhoc,runtime) … … The presence of the hardened runtime
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
3d
Reply to NWConnectionGroup with Both Datagram and Non-datagram streams
Just to be clear, I’m in no way an expert on Core Media, but this looks like a Swift issue and I can certainly help with that. It’s hard to be 100% sure, because I’m not sure what the type of the bytes property of HEVCNALUnit is, but this looks like undefined behaviour. Specifically, this: let pointer = datas.map { $0.withUnsafeBufferPointer { $0 }.baseAddress! } is very suspicious because the closure you pass to withUnsafeBufferPointer(…) escapes its buffer parameter. In general, such buffers are only valid inside the closure itself, as explained in the docs: The pointer passed as an argument to body is valid only during the execution of withUnsafeBufferPointer(_:). Do not store or return the pointer for later use. This is exactly the sort of thing that tends to work in Debug builds but fail in Release builds, when the optimiser kicks in. For a single buffer you can move the work to inside the closure. For example, this code ensures has both the call to memchr and the interpretation of its result is within t
Replies
Boosts
Views
Activity
3d
Reply to WeatherKit JWT auth fails with Code=2 — entitlement confirmed in signed binary, all config verified, persists for weeks
AssuredBuyer, I looked at our side of your Q2UJCHMHJ7.com.newtendrelstudios.KazeDiorama App ID and it shows that the App ID has the WeatherKit capability enabled but not the WeatherKit app service. See this post for some screenshots of how things should look at your end. Please check the app service for Q2UJCHMHJ7.com.newtendrelstudios.KazeDiorama and reply back here with the results. davidfr22, I’ve no news to share, but rest assured that I haven’t forgotten you. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
3d
Reply to Updating App - Validation Hell - 90286, 91130
[quote='898677022, DrMiller, /thread/835497?answerId=898677022#898677022, /profile/DrMiller'] So, Xcode is not using the Team ID???? [/quote] Right. But your screenshot is good evidence that the App ID prefix has actually been changed, which is good. Try this: Navigate to the Certificates, Identifiers, and Profiles section of the Developer website. Under Profiles, start creating a new profile. Select App Store Connect and click Continue. Select your App ID and click Continue. Complete the rest of the workflow. Download the profile. Dump it: % security cms -D -i Test835497_Dist.mobileprovision | plutil -p - { … ApplicationIdentifierPrefix => [ 0 => Z7P62XVNWC ] … Entitlements => { application-identifier => Z7P62XVNWC.com.example.Test835497-T … com.apple.developer.team-identifier => Z7P62XVNWC … } … TeamIdentifier => [ 0 => Z7P62XVNWC ] … } Here you can see the App ID prefix property (ApplicationIdentifierPrefix) matches the Team ID property (TeamIdentifier) and that the App ID entitlement
Replies
Boosts
Views
Activity
3d
Reply to Command Line Tools bundled Python 3.9.6 flagged by vulnerability scanner
[quote='898565022, Etresoft, /thread/838682?answerId=898565022#898565022, /profile/Etresoft'] Just submitted FB23940030 [/quote] Fair enough. But just to set expectations here, LLDB is one of Apple’s core developer tools and Python is a core component of LLDB [1]. Breaking that dependency would be… tricky. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com [1] https://lldb.llvm.org/use/python-reference.html
Replies
Boosts
Views
Activity
3d
Reply to Supported architecture and organization requirement for an on-device iOS domain blocker
There are two parts to your question: What’s supported? What’s allowed on the App Store? I work for DTS and thus can only answer the first part. I have two suggestions for your App Store policy questions: You can ask them on App Store Distribution & Marketing > App Review. But you’re probably better off asking App Review directly. See their contact information on this page, and specifically the 30-minute video appointment thing. In contrast, support questions are DTS’s métier, so I’m happy to talk about that… From the DTS perspective, TN3120 is all about intent. If you plan to use a packet tunnel provider for something other than VPN then DTS won’t help you with that. One of DTS’s key goals is to help developers create products that will work now and in the future. We don’t support ‘off label’ use of packet tunnel providers because, in our experience, such solutions are brittle. You might be able to get something working at your desk, but then in it fails in specific environments or, worse yet, starts
Replies
Boosts
Views
Activity
3d
Reply to iOS Wi-Fi Aware: Throughput Comparison of Real-Time vs. Bulk Mode
Hmmm, I’m getting the sense of déjà vu here… Oh, right, see my answer here. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Replies
Boosts
Views
Activity
3d
Reply to Xcode always uses free Team (CKY689QC8W) instead of paid Team (CK4269T4Q4) for code signing
CKY689QC8W isn’t a valid Team ID. Are you sure you’re not confusing it with your User ID or your Team Member ID? See Code Signing Identifiers Explained for an explanation of that distinction. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Replies
Boosts
Views
Activity
3d
Reply to Executables crashing on MacOS BigSur version with dyld error - code signing blocked mmap
[quote='838949021, raghavendra_m, /thread/838949, /profile/raghavendra_m'] there is a warning about library validation. Could that be causing an issue? [/quote] Yes. Fix that before doing anything else. [quote='838949021, raghavendra_m, /thread/838949, /profile/raghavendra_m'] I'm concerned about VersionSDK being 0 and RuntimeVersion property not being present [/quote] Right. That’s the cause of the library validation issue. As to what’s causing that problem, I have a detailed writeup in Notarisation and the macOS 10.9 SDK. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: Code Signing SubTopic: General Tags:
Replies
Boosts
Views
Activity
3d
Reply to SecKeyDecrypt succeeds but UTF-8 decoding returns nil for one specific RSA ciphertext (1024-bit, kSecPaddingNone)
I’ve include a small test program at the end of this reply. Sorry it’s in Swift. I don’t have time to convert it to Objective-C right now. When I run this [1] it prints: plaintext: 20 <534f3230 32363035 31343037 33353037 33393734> cyphertext: 128 <3007a45e 5c98cff4 2ad26de6 da5aeb92 d596a17d ff991476 39a9464e 0cdf9ccd d1808adb 612d1952 90d4d0b1 e29f6abf 79e501bf 1ec73e0c 6900ed07 3f75f61e 7359aa4a dc5cc886 229e2aac 173c8d9b d51da884 05121f6c cb8d30fb 86b5f26c dbb6bd6d d9a382a7 8a1c5c66 7ccc2f8c 30c235e0 67acd0d8 48f236f0 258972d9> decrypted: 128 <00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 534f3230 32363035 31343037 33353037 33393734> There are a few things to notice here: The cyphertext and decrypted text are 128 bytes, which matches the RSA key size. This doesn’t match the size of the plaintext
Replies
Boosts
Views
Activity
4d
Reply to Issue with Native Socket Connection (Error 65) over WiFi Aware on iOS
[quote='898470022, DTS Engineer, /thread/838513?answerId=898470022#898470022'] My understanding is that there’s no good way to combine Wi-Fi Aware and BSD Sockets. [/quote] I’ve confirmed that with the Wi-Fi Aware engineering team. You should feel free to file an enhancement request for that support but, in the meantime, you’ll have to use Network framework. If you do file an ER, please post your bug number, just for the record. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Replies
Boosts
Views
Activity
4d
Reply to Apps do not trigger pop-up asking for permission to access local network on macOS Sequoia/Tahoe
[quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] I have a customer on macOS 27 [/quote] So we’re talking about macOS 27 beta here, right? [quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] I do not have a repro myself. [/quote] Meaning that it works with macOS 27 beta in your environment, right? Or that you haven’t actually tested with macOS 27 beta? [quote='898566022, ControlAV, /thread/814226?answerId=898566022#898566022, /profile/ControlAV'] with my Store app [/quote] You mean your App Store app, right? If so, that reduces the chances of one of the more common pitfalls, namely having multiple copies of the app installed. Users who install apps from the App Store typically have a single copy of the app installed in the /Applications. A second cause of problems is the app not actually hitting the local network. I most commonly see this on iOS, where folks hard code en0 as the Wi-Fi interface, which is not something we
Replies
Boosts
Views
Activity
4d
Reply to TLS 1.2 session ID 不复用
At the URLSession level, the only control you have over this is the session itself. To maximise the chances of session reuse, you should issue all of your requests in the same session. [quote='838823021, yaya2026, /thread/838823, /profile/yaya2026'] we do not create a new session per request [/quote] Cool. Unfortunately that’s all you can do here. This allows the session to reuse the session ID, but it doesn’t require it. The session decides whether to do that based on its own internal logic. The pattern you’ve described — first connection does the full handshake, second connection resumes the session, third connection does the full handshake, and so on — is something I’ve seen before. I’ve never got to the bottom of why URLSession works this way. Historically it was happy to reuse a session ID multiple times. IMO your best option here is to move to a more modern HTTP protocol, so HTTP/2 or HTTP/3. Both of those run multiple requests over the same underlying (TCP or QUIC) connection. This will avoid this prob
Replies
Boosts
Views
Activity
4d
Reply to Exposing cloud-backed signing identities to third-party macOS apps with CryptoTokenKit
[quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] The flow I am trying to implement is: [/quote] Yep. That’s exactly the architecture that I’d expect you to use. [quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] Should [creating persistent entries] be done directly by the container application … ? [/quote] Yes. [quote='838830021, TechnicalTeamTS, /thread/838830, /profile/TechnicalTeamTS'] Is there any official Apple sample project … ? [/quote] No [1]. When driverConfigurations hangs, what does the backtrace look like? To see this, stop the process in the debugger, select the relevant thread, and run the bt command: (lldb) thread list Process 26106 stopped * thread #1: … * thread #2: … … (lldb) thread select 1 (lldb) bt Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com [1] I’ll be in touch via your DTS case soon, hopefully later today.
Topic: Privacy & Security SubTopic: General Tags:
Replies
Boosts
Views
Activity
4d
Reply to screenUnlockMode = 2 default of loginwindow makes it impossible to unlock the workstation on macOS 27
I’ve not seen this reported previously, but that doesn’t come as a huge shock. Login UI authorisation plug-ins are an obscure part of the OS. [quote='838847021, oleksandr91, /thread/838847, /profile/oleksandr91'] I have filed a feedback FB23918474 [/quote] Thanks. That’s the best path forward for an obvious regression like this. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: Privacy & Security SubTopic: General Tags:
Replies
Boosts
Views
Activity
4d