Skip to content

Instantly share code, notes, and snippets.


Yawning Angel Yawning

View GitHub Profile
Yawning / gist:9501996
Created Mar 12, 2014
Python CTR_DRBG (CTR-AES-128)
View gist:9501996
""" NIST SP 800-90A style CTR_DRBG, using CTR-AES-128. """
import obfsproxy.common.aes as aes
import binascii
import os
import random
class CtrDrbg(random.Random):
View gist:9515778
import twisted.trial.unittest
import obfsproxy.common.ctr_drbg as ctr_drbg
import binascii
import math
import struct
class testCtrDrbg_NIST(twisted.trial.unittest.TestCase):
Yawning / gist:330f55df5638577dd5cd
Created Jul 10, 2014
gpg2 patch to support RSA keys > 16384 bits
View gist:330f55df5638577dd5cd
diff -uNr gnupg-2.0.22/g10/gpg.c gnupg-2.0.22-large-keys/g10/gpg.c
--- gnupg-2.0.22/g10/gpg.c 2013-10-04 12:32:53.000000000 +0000
+++ gnupg-2.0.22-large-keys/g10/gpg.c 2013-10-26 22:14:18.933010862 +0000
@@ -2050,7 +2050,7 @@
/* Initialize the secure memory. */
- if (!gcry_control (GCRYCTL_INIT_SECMEM, 32768, 0))
+ if (!gcry_control (GCRYCTL_INIT_SECMEM, 131072, 0))
got_secmem = 1;
Yawning / gist:4cca041c456ccf113700
Created Dec 23, 2014
Don't use GMPY rand for key generation, ever.
View gist:4cca041c456ccf113700
#!/usr/bin/env python2
# Extract the "improved" key generation code from
# and, as of: a623e25e10e5e96ea1d5b85853b23bea00ee439f
from gmpy import mpz, rand
DIFFIE_HELLMAN_MODULUS = mpz(0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF)
rand('init', 128)
Yawning / gist:2829f9adf889f1334005
Created Jan 2, 2015
gettimeofday() benchmark.
View gist:2829f9adf889f1334005
#include <stdint.h>
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <assert.h>
#define ITERS 1000000000
static uint64_t gettime(void) {
struct timespec ts;
Yawning / gist:fda95db37092669958b1
Last active Aug 29, 2015
Simple helper that checks if Linux filesystem capabilites() are set without using external libraries.
View gist:fda95db37092669958b1
#include <sys/types.h>
#include <sys/xattr.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
* A quick and dirty test to see if a given file has any Linux capabilities
* set.
View 0001-squash-Fixup-handle_control_hspost.patch
From 6d23b7b45581a218cf1fdfd9ef580f3c628ffdbe Mon Sep 17 00:00:00 2001
From: Yawning Angel <>
Date: Fri, 27 Mar 2015 14:15:57 +0000
Subject: [PATCH 1/1] (squash) Fixup handle_control_hspost().
* Use C99 to bring variable declarations closer to where they are
* Don't leak a smartlist_t (args was initialized, and getargs_helper()
trampled over it).
* Don't leak a rend_encoded_v2_service_descriptor_t when the descriptor
Yawning / linux_get_external_addr.c
Last active Nov 8, 2021
Querying the address used to reach the outside world, the correct way. (Linux).
View linux_get_external_addr.c
#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/uio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
Yawning / orhttp_example.go
Created Apr 29, 2015
How to dispatch HTTP requests via Tor in Go.
View orhttp_example.go
// To the extent possible under law, the Yawning Angel has waived all copyright
// and related or neighboring rights to orhttp_example, using the creative
// commons "cc0" public domain dedication. See LICENSE or
// <> for full details.
package main
import (
// Things needed by the actual interface.
Yawning / elligator2.h
Last active Mar 20, 2020
(DEPRECATED) A mostly drop in elligator2 for ed25519-donna.
View elligator2.h
There used to be something that resembled an Elligator2 implementation here ported from agl's
Go code. The implementation is unmaintained and has severe issues (as pointed out in a comment),
and should not be used for anything.