Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-02-27Add functions to parse and generate PKCS#7 files with CRLs.Adam Langley
Change-Id: I7b6acc9004beb7b7090de1837814ccdff2e9930e Reviewed-on: https://boringssl-review.googlesource.com/3680 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-27Remove pointless free, and use preferred way of calling d2i_* functionsDavid Benjamin
(Imported from upstream's 535bc8faf69dc4ff39e2ee99195b268cf99b9569) Change-Id: Ia5abf4dce9dc8cdf5a9b77a3e360a40b5f815adf Reviewed-on: https://boringssl-review.googlesource.com/3672 Reviewed-by: Adam Langley <agl@google.com>
2015-02-27Align d2i_ECPrivateKey error-handling with upstream.David Benjamin
Upstream decided to make the caller free the scratch space rather than the callee. May as well match. (Existing code is pretty inconsistent. This API pattern needs to go.) See upstream's 9e442d485008046933cdc7da65080f436a4af089. Change-Id: I7c9fcae5778a74d6ae8e9f546e03fb2cf6e48426 Reviewed-on: https://boringssl-review.googlesource.com/3671 Reviewed-by: Adam Langley <agl@google.com>
2015-02-27Unexport EC_GROUP_copy.David Benjamin
EC_GROUP_copy is an rather unfriendly function; it doesn't work if the groups have different[*] underlying EC_METHODs, but this notion is not exposed through the API. I found no callers of EC_GROUP_copy in external code. This leaves the precompute_mult functions as the remaining mutable API exposed through EC_GROUP. [*] Though, of the two EC_METHODs right now, simple.c is entirely unused. Change-Id: Iabb52518005250fb970e12b3b0ea78b4f6eff4a0 Reviewed-on: https://boringssl-review.googlesource.com/3631 Reviewed-by: Adam Langley <agl@google.com>
2015-02-27Add a prebuilt CMake for OS X for the bots.David Benjamin
Built from: 45f4d3fa8a2f61cc092ae461aac4cac1bab4ac6706f98274ea7f314dd315c6d0 cmake-3.1.3.tar.gz We're still waiting on infra before the buildbot master is up, but let's get this ready for when we do; it should be fairly easy. BUG=430237 Change-Id: I3a414743d44052e1aa48759fa5f125db4d4913b5 Reviewed-on: https://boringssl-review.googlesource.com/3670 Reviewed-by: Adam Langley <agl@google.com>
2015-02-27Test that we reject RSA ServerKeyExchange more thoroughly.David Benjamin
The old test just sent an empty ServerKeyExchange which is sufficient as we reject the message early. But be more thorough and implement the actual ephemeral key logic in the test server. Change-Id: I016658762e4502c928c051e14d69eea67b5a495f Reviewed-on: https://boringssl-review.googlesource.com/3650 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26Use EC_GROUP_dup and EC_POINT_dup in EC_KEY_copy.David Benjamin
They do the same thing. This removes all callers of EC_GROUP_copy outside EC_GROUP_dup. Change-Id: I65433ee36040de79e56483dfece774e01e2e2743 Reviewed-on: https://boringssl-review.googlesource.com/3630 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26Remove explicit .hiddens from x86_64 perlasm files.David Benjamin
This reverts the non-ARM portions of 97999919bbe85ab213d283e18e597e028f8685d1. x86_64 perlasm already makes .globl imply .hidden. (Confusingly, ARM does not.) Since we don't need it, revert those to minimize divergence with upstream. Change-Id: I2d205cfb1183e65d4f18a62bde187d206b1a96de Reviewed-on: https://boringssl-review.googlesource.com/3610 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26Actually check that the message has the expected type in DTLS.David Benjamin
That might be a reasonable check to make, maybe. DTLS handshake message reading has a ton of other bugs and needs a complete rewrite. But let's fix this and get a test in now. Change-Id: I4981fc302feb9125908bb6161ed1a18288c39e2b Reviewed-on: https://boringssl-review.googlesource.com/3600 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26Add tests for installing the certificate on the early callback.David Benjamin
Test both asynchronous and synchronous versions. This callback is somewhat different from others. It's NOT called a second time when the handshake is resumed. This appears to be intentional and not a mismerge from the internal patch. The caller is expected to set up any state before resuming the handshake state machine. Also test the early callback returning an error. Change-Id: If5e6eddd7007ea5cdd7533b4238e456106b95cbd Reviewed-on: https://boringssl-review.googlesource.com/3590 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26EC_GROUP_cmp should return zero if the groups match.Adam Langley
(I got this wrong when reading the OpenSSL code.) Change-Id: Ib289ef41d0ab5a3157ad8b9454d2de96d1f86c22 Reviewed-on: https://boringssl-review.googlesource.com/3620 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23Find perl using the CMake's standard FindPerl module.David Benjamin
This gives a standard PERL_EXECUTABLE configuration knob which is useful for specifying a perl to use without having it in PATH. Change-Id: I4b196b77e0b4666081a3f291fee3654c47925844 Reviewed-on: https://boringssl-review.googlesource.com/3570 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23Use TCP sockets rather than socketpairs in the SSL tests.David Benjamin
This involves more synchronization with child exits as the kernel no longer closes the pre-created pipes for free, but it works on Windows. As long as TCP_NODELAY is set, the performance seems comparable. Though it does involve dealing with graceful socket shutdown. I couldn't get that to work on Windows without draining the socket; not even SO_LINGER worked. Current (untested) theory is that Windows refuses to gracefully shutdown a socket if the peer sends data after we've stopped reading. cmd.ExtraFiles doesn't work on Windows; it doesn't use fds natively, so you can't pass fds 4 and 5. (stdin/stdout/stderr are special slots in CreateProcess.) We can instead use the syscall module directly and mark handles as inheritable (and then pass the numerical values out-of-band), but that requires synchronizing all of our shim.Start() calls and assuming no other thread is spawning a process. PROC_THREAD_ATTRIBUTE_HANDLE_LIST fixes threading problems, but requires wrapping more syscalls. exec.Cmd also doesn't let us launch the process ourselves. Plus it still requires every handle in the list be marked inheritable, so it doesn't help if some other thread is launching a process with bInheritHandles TRUE but NOT using PROC_THREAD_ATTRIBUTE_HANDLE_LIST. (Like Go, though we can take syscall.ForkLock there.) http://blogs.msdn.com/b/oldnewthing/archive/2011/12/16/10248328.aspx The more natively Windows option seems to be named pipes, but that too requires wrapping more system calls. (To be fair, that isn't too painful.) They also involve a listening server, so we'd still have to synchronize with shim.Wait() a la net.TCPListener. Then there's DuplicateHandle, but then we need an out-of-band signal. All in all, one cross-platform implementation with a TCP sockets seems simplest. Change-Id: I38233e309a0fa6814baf61e806732138902347c0 Reviewed-on: https://boringssl-review.googlesource.com/3563 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23perlasm/x86masm.pl: make it work.David Benjamin
Though this doesn't mean that masm becomes supported, the script is still provided on don't-ask-in-case-of-doubt-use-nasm basis. See RT#3650 for background. (Imported from upstream's 2f8d82d6418c4de8330e2870c1ca6386dc9e1b34) The data_word changes were already fixed with our 3e700bb3e812730f60bec529a14c0d35ea9665aa, but best to avoid diverging there. Change-Id: Iab5455534e8bd632fb2b247ff792d411b105f17a Reviewed-on: https://boringssl-review.googlesource.com/3581 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23sha/asm/sha1-586.pl: fix typo.David Benjamin
The typo doesn't affect supported configuration, only unsupported masm. (Imported from upstream's 3372c4fffa0556a688f8f1f550b095051398f596) Change-Id: Ib6a2f1d9f6fc244a33da1e079188acdf69d5e2f3 Reviewed-on: https://boringssl-review.googlesource.com/3580 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23EVP_CIPHER_CTX_cleanup cannot fail.David Benjamin
There is exactly one implementation and it doesn't fail. Plus a cleanup function that can fail is very bad manners; the caller has no choice but to leak at that point. Change-Id: I5b524617ef37bc7d92273472fa742416ea7dfd43 Reviewed-on: https://boringssl-review.googlesource.com/3564 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23Tidy up the alert-parsing code.David Benjamin
Align the DTLS and TLS implementations more. s3_pkt.c's version still has remnants of fragmentable alerts and only one side marks some variables as const. Also use warning/fatal constants rather than the numbers with comments. Change-Id: Ie62d3af1747b6fe4336496c047dfccc9d71fde3f Reviewed-on: https://boringssl-review.googlesource.com/3562 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23Use SSL_get_cipher_by_value in cipher_get_rfc_name tests.David Benjamin
Saves making a temporary SSL_CTX and looking at its insides. Change-Id: Ia351b9b91aec8b813ad7b6e373773396f0975f9a Reviewed-on: https://boringssl-review.googlesource.com/3561 Reviewed-by: Adam Langley <agl@google.com>
2015-02-23Remove BIO_should_retry checks in DTLS state machines.David Benjamin
These were added in upstream's 7e159e0133d28bec9148446e8f4dd86c0216d819 for SCTP. As far as I can tell, they were a no-op there too. The corresponding RT ticket makes no mention of them. SSL_get_error checks the retry flags of the BIO already. Specifically it checks BIO_should_read and BIO_should_write, but those two automatically set BIO_should_retry. (Minor, but I noticed them idly. One less thing to think about when the state machines finally unify.) Change-Id: I17a956a51895fba383063dee574e0fbe3209f9b0 Reviewed-on: https://boringssl-review.googlesource.com/3560 Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Never set RC4_CHAR.Adam Langley
RC4_CHAR is a bit in the x86(-64) CPUID information that switches the RC4 asm code from using an array of 256 uint32_t's to 256 uint8_t's. It was originally written for the P4, where the uint8_t style was faster. (On modern chips, setting RC4_CHAR took RC4-MD5 from 458 to 304 MB/s. Although I wonder whether, on a server with many connections, using less cache wouldn't be better.) However, I'm not too worried about a slowdown of RC4 on P4 systems these days (the last new P4 chip was released nine years ago) and I want the code to be simplier. Also, RC4_CHAR was set when the CPUID family was 15, but Intel actually lists 15 as a special code meaning "also check the extended family bits", which the asm didn't do. The RC4_CHAR support remains in the RC4 asm code to avoid drift with upstream. Change-Id: If3febc925a83a76f453b9e9f8de5ee43759927c6 Reviewed-on: https://boringssl-review.googlesource.com/3550 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Tidy up RC4 a little.Adam Langley
RC4_CHUNK is always defined, RC4_INT is always uint32_t and the "register" keyword is an anachronism. Change-Id: Ia752af30ba6bac0ee6216ce189fcf3888de73c6e Reviewed-on: https://boringssl-review.googlesource.com/3544 Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Add SSL_get_cipher_by_value.Adam Langley
(Which is just an exported wrapper around ssl3_get_cipher_by_value.) Change-Id: Ibba166015ce59e337ff50963ba20237ac4949aaf Reviewed-on: https://boringssl-review.googlesource.com/3543 Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Use SSL_MODE_SEND_FALLBACK_SCSV.Adam Langley
Upstream settled in this API, and it's also the one that we expect internally and that third_party code will expect. Change-Id: Id7af68cf0af1f2e4d9defd37bda2218d70e2aa7b Reviewed-on: https://boringssl-review.googlesource.com/3542 Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Add the CTX parameter back to EC_GROUP_cmp.Adam Langley
It was a mistake to remove this in the first place. Change-Id: Icd97b4db01e49151daa41dd892f9da573ddc2842 Reviewed-on: https://boringssl-review.googlesource.com/3541 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Rename safe_stack.h to safestack.h.Adam Langley
This empty header file exists only to make older code compile. But I named it incorrectly! Upstream doesn't have the underscore in the name. Change-Id: I96654b7e17d84a5f2810e6eb20fe7bfb22f855fd Reviewed-on: https://boringssl-review.googlesource.com/3540 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Hide all asm symbols.Adam Langley
We are leaking asm symbols in Android builds because the asm code isn't affected by -fvisibility=hidden. This change hides all asm symbols. This assumes that no asm symbols are public API and that should be true. Some points to note: In crypto/rc4/asm/rc4-md5-x86_64.pl there are |RC4_set_key| and |RC4_options| functions which aren't getting marked as hidden. That's because those functions aren't actually ever generated. (I'm just trying to minimise drift with upstream here.) In crypto/rc4/asm/rc4-x86_64.pl there's |RC4_options| which is "public" API, except that we've never had it in the header files. So I've just deleted it. Since we have an internal caller, we'll probably have to put it back in the future, but it can just be done in rc4.c to save problems. BUG=448386 Change-Id: I3846617a0e3d73ec9e5ec3638a53364adbbc6260 Reviewed-on: https://boringssl-review.googlesource.com/3520 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-20Pass fragment to dtls1_retransmit_message.Adam Langley
We can pass the fragment pointer to dtls1_retransmit_message rather than having it look it up again. Change-Id: If6957428418a44e7ceac91a93f7c6032d331d9d8 Reviewed-on: https://boringssl-review.googlesource.com/3510 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-20Return bool from C++ functions in bssl_shim.David Benjamin
Also move BIO_print_errors_fp up a level so it's less repetitive. There's enough exit points now that it doesn't seem like adding a separate return exit code for each has held up. (Maybe there should be a macro that samples __LINE__...) Change-Id: I120e59caaa96185e80cf51ea801a5e1f149b1b39 Reviewed-on: https://boringssl-review.googlesource.com/3530 Reviewed-by: Adam Langley <agl@google.com>
2015-02-19Mark OPENSSL_armcap_P as hidden in ARM asm.Adam Langley
This is an import from ARM. Without this, one of the Android builds of BoringSSL was failing with: (sha512-armv4.o): requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC This is (I believe) a very misleading error message. The R_ARM_REL32 relocation type is the correct type for position independent code. But unless the target symbol is hidden then the linker doesn't know that it's not going to be overridden by a different ELF module. Chromium probably gets away with this because of different default compiler flags than Android. Change-Id: I967eabc4d6b33d1e6635caaf6e7a306e4e77c101 Reviewed-on: https://boringssl-review.googlesource.com/3471 Reviewed-by: Adam Langley <agl@google.com>
2015-02-19Don't randomly print stuff to stderr.Adam Langley
Change-Id: I821c546612bdd7fca2c3d6a043a4f888f928ee61 Reviewed-on: https://boringssl-review.googlesource.com/3470 Reviewed-by: Adam Langley <agl@google.com>
2015-02-19Style guide tweaks.David Benjamin
I think this is better wording for function documentation. Also note that C++ code uses Google C++ naming rather than OpenSSL, per c273d2c537dcd4b66e5235dab14cc7d6e983fc09. Change-Id: I7334296bf1490395b2ba02e8b6ce245635826df2 Reviewed-on: https://boringssl-review.googlesource.com/3500 Reviewed-by: Adam Langley <agl@google.com>
2015-02-19Allow False Start only for >= TLS 1.2 && AEAD && forward-secure && ALPN/NPN.David Benjamin
Tighten up the requirements for False Start. At this point, neither AES-CBC or RC4 are something that we want to use unless we're sure that the server wants to speak them. Rebase of original CL at: https://boringssl-review.googlesource.com/#/c/1980/ BUG=427721 Change-Id: I9ef7a596edeb8df1ed070aac67c315b94f3cc77f Reviewed-on: https://boringssl-review.googlesource.com/3501 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Add support for Chromium's JSON test result format.David Benjamin
Also adds a flag to runner.go to make it more suitable for printing to a pipe. Change-Id: I26fae21f3e4910028f6b8bfc4821c8c595525504 Reviewed-on: https://boringssl-review.googlesource.com/3490 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Pull in a pre-built tarball of cmake 3.1.3 for the bots.David Benjamin
Built from: 45f4d3fa8a2f61cc092ae461aac4cac1bab4ac6706f98274ea7f314dd315c6d0 cmake-3.1.3.tar.gz Also drop in an extraction script. Change-Id: I3487e9d432290a7dbabf854b927412c58c35d12b Reviewed-on: https://boringssl-review.googlesource.com/3492 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Drop in Go toolchain bootstrap scripts for the bots.David Benjamin
Severely trimmed version of Chrome infra's scripts. Change-Id: I378b68be670b74fe0518de5d66e0aa8b2d709f26 Reviewed-on: https://boringssl-review.googlesource.com/3491 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Remove X509_get_pubkey_parameters.David Benjamin
It's never called in outside code. This too seems to be a remnant of the DSA PKIX optional parameter stuff. This is confirmed both by a removed comment and by the brief documentation at http://www.umich.edu/~x509/ssleay/x509_pkey.html RFC 5480 does not allow ECDSA keys to be missing parameters, so this logic is incorrect for ECDSA anyway. It was also failing to check EVP_PKEY_copy_parameters' return value. And that logic looks pretty suspect if you have a chain made up multiple certificate types. Change-Id: Id6c60659a0162356c7f3eae5c797047366baae1c Reviewed-on: https://boringssl-review.googlesource.com/3485 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Don't EVP_PKEY_copy_parameters when configuring cert and key.David Benjamin
I believe this is a remnant of DSA. The logic strangely fails to check for failure and then goes out of its way to ERR_clear_error. I believe this is so that keys that are missing parameters silently move on. This dates to upstream's dfeab0689f69c0b4bd3480ffd37a9cacc2f17d9c, which is SSLeay 0.9.1b. At that time, EVP_PKEY_copy_parameters only did anything for DSA. (Now it only does anything for ECDSA.) My read is that this comes from DSA in PKIX's "optional domain parameters" craziness. RFC 3279 says: If the DSA domain parameters are omitted from the SubjectPublicKeyInfo AlgorithmIdentifier and the CA signed the subject certificate using a signature algorithm other than DSA, then the subject's DSA domain parameters are distributed by other means. This was probably part of some weird thing where, if your certificate is missing parameters, the server would know what to use based on the private key. (Also this was making the malloc tests unhappy.) Change-Id: I8d8122a9f50a19e2bbe067f311a8e2d30774935c Reviewed-on: https://boringssl-review.googlesource.com/3484 Reviewed-by: Adam Langley <agl@google.com>
2015-02-18Handle failures in ssl3_finish_mac.David Benjamin
It may fail because the BIO_write to the memory BIO can allocate. Unfortunately, this bubbles up pretty far up now that we've moved the handshake hash to ssl3_set_handshake_header. Change-Id: I58884347a4456bb974ac4783078131522167e29d Reviewed-on: https://boringssl-review.googlesource.com/3483 Reviewed-by: Adam Langley <agl@google.com>
2015-02-17Add some missing error failure checks.David Benjamin
Found while diagnosing some crashes and hangs in the malloc tests. This (and the follow-up) get us further but does not quite let the malloc tests pass quietly, even without valgrind. DTLS silently ignores some malloc failures (confusion with silently dropping bad packets) which then translate to hangs. Change-Id: Ief06a671e0973d09d2883432b89a86259e346653 Reviewed-on: https://boringssl-review.googlesource.com/3482 Reviewed-by: Adam Langley <agl@google.com>
2015-02-17Rename cutthrough to False Start.David Benjamin
False Start is the name it's known by now. Deprecate the old API and expose new ones with the new name. Change-Id: I32d307027e178fd7d9c0069686cc046f75fdbf6f Reviewed-on: https://boringssl-review.googlesource.com/3481 Reviewed-by: Adam Langley <agl@google.com>
2015-02-17Remove server-side HelloVerifyRequest support.David Benjamin
I found no users of this. We can restore it if needbe, but I don't expect anyone to find it useful in its current form. The API is suspect for the same reasons DTLSv1_listen was. An SSL object is stateful and assumes you already have the endpoint separated out. If we ever need it, server-side HelloVerifyRequest and DTLSv1_listen should be implemented by a separate stateless listener that statelessly handles cookieless ClientHello + HelloVerifyRequest. Once a ClientHello with a valid cookie comes in, it sets up a stateful SSL object and passes control along to that. Change-Id: I86adc1dfb6a81bebe987784c36ad6634a9a1b120 Reviewed-on: https://boringssl-review.googlesource.com/3480 Reviewed-by: Adam Langley <agl@google.com>
2015-02-14Switch nonce type in chacha_vec.c to uint32_t.Adam Langley
This was suggested in https://boringssl-review.googlesource.com/#/c/3460 but I forgot to upload the change before submitting in Gerrit. Change-Id: I3a333fe2e8880603a9027638dd013f21d8270638
2015-02-13Don't require the ChaCha nonce to be aligned on ARM.Adam Langley
Change-Id: I34ee66fcc53d3371591beee3373c46598c31b5c5 Reviewed-on: https://boringssl-review.googlesource.com/3460 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-13Remove support for zero lengths from do_x509_check.Adam Langley
Change-Id: I9ea838850d4c7ea8280cacb1a275b2d6cee1cbbe
2015-02-13Update API to use (char *) for email addresses and hostnames.Adam Langley
Reduces number of silly casts in OpenSSL code and likely most applications. Consistent with (char *) for "peername" value from X509_check_host() and X509_VERIFY_PARAM_get0_peername(). (Imported from upstream's e83c913723fac7432a7706812f12394aaa00e8ce.) Change-Id: Id0fc11773a0cee8933978cd4bdbd8251fd7cfb5f
2015-02-13Set optional peername when X509_check_host() succeeds.Adam Langley
Pass address of X509_VERIFY_PARAM_ID peername to X509_check_host(). (Imported from upstream's 55fe56837a65ff505b492aa6aee748bf5fa91fec.) Change-Id: Ic21bfb361b8eb25677c4c2175882fa95ea44fc31
2015-02-13New peername element in X509_VERIFY_PARAM_ID.Adam Langley
Declaration, memory management, accessor and documentation. (Imported from upstream's 1eb57ae2b78c119bfba7ab647951130e968d1664.) Change-Id: Ifa9672e46445e44a78001b0f9430a93c138d73d7
2015-02-13More complete input validation of X509_check_mumble.Adam Langley
(Imported from upstream's 3d15d58e55b97207188e87708a0e7f49b4bfd7fd.) Change-Id: Iae9e3f839e03c22dc45ac2151884e7afcf31af7b
2015-02-13Multiple verifier reference identities.Adam Langley
(Imported from upstream's 8abffa4a73fcbf6536e0a42d736ed9211a8204ea, 9624b50d51de25bb2e3a72e81fe45032d80ea5c2 and 41e3ebd5abacfdf98461cdeb6fa97a4175b7aad3.) Change-Id: Ic9099eb5704b19b4500229e89351371cc6184f9d
2015-02-13Add sk_deep_copy and its macro.Adam Langley
The next change imported from upstream needs this function. Change-Id: I547efa1f7f46f0558e88047837a26ede32b19275